文章目录
- 1.java不支持多继承
- 2.子类不能拥有父类的private成员
- 3.子父类定义相同的成员变量-this,super
- 4.方法重写(方法覆盖)
- 5.继承中的构造函数
1.java不支持多继承
java不支持多继承,即不支持继承多个父类。因为多继承存在安全隐患,当多个父类中定义了相同的成员,子类对象不确定运行哪一个。
2.子类不能拥有父类的private成员
子类拥有父类中非pirvate的成员
3.子父类定义相同的成员变量-this,super
3、子类父类定义了相同的成员变量,用this,super关键字区分。如果没有使用关键字,默认为this。
this.name 先到子类中找,如果子类定义了name,就使用子类的;如果子类没有定义,父类中定义了,就使用父类的name。
super.name 直接使用父类中的name。
4.方法重写(方法覆盖)
子类父类定义了同名的函数,子类对象调用时,会执行子类中的函数,就好像父类中的函数被覆盖了一样。这个就叫函数覆盖(函数重写)
要想调用父类中被覆盖的方法,需要用super关键字。
注意:函数覆盖时,必须保证子类中的函数的访问权限要>=父类中函数的访问权限,否则编译报错
5.继承中的构造函数
创建子类时,会先执行父类构造函数,然后执行子类构造函数
子类构造函数第一行默认有一个隐式super(),也就是默认调用父类的无参构造函数
调用父类的有参构造函数
注意:如果父类没有无参构造函数(显式隐式的都没有),那使用子类构造函数时会报错,因为子类构造函数始终默认是隐式调用父类无参构造函数