信息发布→ 登录 注册 退出

Java继承的问题引导和测试代码

发布时间:2026-01-11

点击量:
目录
  • 1.1、定义
  • 1.2、创建子类
  • 1.3、继承的基本规则
    • 1. 子类可以继承除父类构造函数以外的一切成员
    • 2. 虽然子类继承了父类的私有成员,但子类并不能直接访问,如果想要访问私有成员必须借助父类的公共接口。
    • 3. 只支持单一继承,不支持多重继承,但支持多层继承
  • 1.4、阻止继承
    • 1.4.1、final修饰符
      • 1. final 修饰的类不能被继承
      • 2. final 修饰的方法不能被覆盖
      • 3. final 修饰的变量(成员变量和局部变量)必须显式初始化,且只能初始化一次。
      • 4. 常量定义的标准格式
  • 总结

    1.1、定义

    从现有类派生的类被称作子类,也叫派生类,扩展类,或孩子类。现有类被称作超类,也叫基类,或父类。

    1.2、创建子类

    public class Person {}
    public class Teacher extends Person{} 
    

    1.3、继承的基本规则

    1. 子类可以继承除父类构造函数以外的一切成员

    为什么子类没有继承父类的构造函数 ?
    父类构造函数无法预知子类新增的属性和方法,所以不能被继承

    2. 虽然子类继承了父类的私有成员,但子类并不能直接访问,如果想要访问私有成员必须借助父类的公共接口。

    public class Person {
    	private String name;
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    	    this.name = name;
    	}
    }
    public class Teacher extends Person{
    // 方法覆盖
    	public String getName() {
    // super 调用父类的功能接口
        	return super.getName() + "校长";
    	}
    }
    public class Test {
    	public static void main(String... args) {
            Teacher flameking = new Teacher();
            System.out.println( flameking.getName() );
        }
    }
    

    测试结果:


    小结:

    super.getName() + "校长"; 这样便能访问父类私有的 name 属性 。所以在子类中可以通过 super.父类公共接口 的形式,访问父类的私有成员。

    3. 只支持单一继承,不支持多重继承,但支持多层继承

    解释:除了Object 没有父类,每个类有且仅有一个直接父类,如果没有明确指出父类,Object 被认为是这个类的父类。

    也许有同学就会问了,既然 Object 是所有类的父类,那么为什么还可以继承其他类呢?
    正如解释里所说:“没有明确指出父类,Object 被认为是这个类的父类。”

    没有明确指出父类

    public class Person {}
    public class Teacher {}
    

    继承关系是这样的:

    继承后

    public class Teacher extends Person{}
    

    继承关系如下:

    也许有同学又会问:既然不能多重继承了,那我要同时继承多个类的功能该怎么办呢?解决办法如下:

    // 第一种方式(✖️)
    public class Person {}
    public class Employee {}
    public class Teacher extends Person,Employee {}
    
    // 第二种方式(✔️)
    public class Person {}
    public class Employee extends Person {}
    public class Teacher extends Employee {}
    

    小结:

    如上,既然不能多重继承,那么利用多层继承的方式便能同时继承多个类的功能。

    1.4、阻止继承

    当我们在创建一个新类时,现有某个类包含我们想要的代码,那么让这个新类继承它,这样我们就不用重新编写代码,就可以复用已存在的属性和方法。可是有某个同学他偏偏不想让别人利用他的代码…

    那他怎么做才能让自己的代码不被别人继承呢?

    1.4.1、final修饰符

    1. final 修饰的类不能被继承

    使用方法:

    public final class Person {}
    

    效果显示:

    2. final 修饰的方法不能被覆盖

    3. final 修饰的变量(成员变量和局部变量)必须显式初始化,且只能初始化一次。

    修改 final 局部变量 的取值

    public class Test {
    	public static void main(String... args) {
        final int temp;
        temp = 1;
        temp = 2;
        }
    }
    

    报错提示:

    final成员变量未显式初始化

    public class Person {
    	private final String name;
    }
    

    报错提示:

    4. 常量定义的标准格式

    public static final 数据类型 常量名=赋值

    常量名:大写字符,如果有多个,用下划线连接

    private 修饰的类成员只能在类的内部访问,这是由面向对象的封装性决定的

    总结

    本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注的更多内容!

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!