继承:
只有private修饰的成员不能被继承
java支持单继承,多重继承(多层次继承),不支持多继承(一个子类有多个继承)
不支持多继承: 因为类中的方法有方法体, 内容不一致,导致作为子类产生调用父类不确定性。
注意:
- 子类继承父类后,就可以使用父类中的成员, private修饰的成员(成员函数,成员变量)不能被子类继承
- 如果父类的方法是静态方法,那么子类也必须是静态方法, 如果父类是非静态那么子类也必须是非静态,也就是说方法复写不能改变方法的访问方式
重写:
在子类中, 出现与父类一模一样的函数, 返回类型,方法名,参数列表都相同
子类在复写父类的函数时, 子类的方法访问权限必须大等于父类的访问权限
public > 默认 > private
super和this的区别:
this:
- 区分成员变量和局部变量
- 记录调用非静态方法地址对象
- 调用本类中的构造函数 例子: this(12) Demo(int a){}
使用this调用本类构造函数,必须位于构造函数的第一行
super() 调用父类,也必须位于构造函数的第一行
使用this调用构造函数, 这个构造函数没有隐式三步,在最后没有this的构造函数中有隐式三步
super: - 调用父类中的成员变量和方法
- 调用父类中的构造函数
- super只是标识, 标识哪个空间是父类的空间
子类重写父类时, 调用父类方法,super.父类方法名()
关于继承中方法复写,我们在实际开发中基本都是非静态方法, 并且发现父类方法不是我们想要的代码, 那么我们可以定义一个类来继承父类, 并重写该方法在子类中的方法体写自己想要的代码
对于任何类中都有隐式三步,第一步super() 的原因,因为子类在继承父类后要调用父类的非静态成员,因为父类的成员都是在构造函数隐式三步中初始化赋值的,所以要调用父类的super() 方法
网友评论