文章目录

  • 1.java不支持多继承
  • 2.子类不能拥有父类的private成员
  • 3.子父类定义相同的成员变量-this,super
  • 4.方法重写(方法覆盖)
  • 5.继承中的构造函数


1.java不支持多继承

java不支持多继承,即不支持继承多个父类。因为多继承存在安全隐患,当多个父类中定义了相同的成员,子类对象不确定运行哪一个。

java 对象同时继承两个父 java 继承多个类_父类

2.子类不能拥有父类的private成员

子类拥有父类中非pirvate的成员

3.子父类定义相同的成员变量-this,super

3、子类父类定义了相同的成员变量,用this,super关键字区分。如果没有使用关键字,默认为this。

this.name 先到子类中找,如果子类定义了name,就使用子类的;如果子类没有定义,父类中定义了,就使用父类的name。

super.name 直接使用父类中的name。

java 对象同时继承两个父 java 继承多个类_构造函数_02

4.方法重写(方法覆盖)

子类父类定义了同名的函数,子类对象调用时,会执行子类中的函数,就好像父类中的函数被覆盖了一样。这个就叫函数覆盖(函数重写)

要想调用父类中被覆盖的方法,需要用super关键字。

java 对象同时继承两个父 java 继承多个类_子类_03


注意:函数覆盖时,必须保证子类中的函数的访问权限要>=父类中函数的访问权限,否则编译报错

java 对象同时继承两个父 java 继承多个类_子类_04

5.继承中的构造函数

创建子类时,会先执行父类构造函数,然后执行子类构造函数

子类构造函数第一行默认有一个隐式super(),也就是默认调用父类的无参构造函数

java 对象同时继承两个父 java 继承多个类_父类_05

调用父类的有参构造函数

java 对象同时继承两个父 java 继承多个类_子类_06


注意:如果父类没有无参构造函数(显式隐式的都没有),那使用子类构造函数时会报错,因为子类构造函数始终默认是隐式调用父类无参构造函数

java 对象同时继承两个父 java 继承多个类_子类_07