Java-继承-多级继承

时间:2020-02-23 14:36:38  来源:igfitidea点击:

在本教程中,我们将学习Java编程语言中的多级继承。

在先前的教程中,我们已经介绍了什么是继承以及如何从子类访问继承的变量和方法。

而且我们还了解了有关super关键字的子级调用其父级构造函数的子级。

何时以及如何调用父构造函数?

为了调用父构造函数,我们在子类中使用super()

如果我们不使用super()来调用父类的构造函数,则从子类中调用父类的默认构造函数。

在下面的示例中,我们有类" GrandParent",该类由"父类"继承,而"父类"由子类" Child"继承。

//three classes involved in inheritance
GrandParent
  |
  V
Parent
  |
  V
Child

代码

//grand parent class
class GrandParent {
  //constructor of GrandParent class
  GrandParent() {
    System.out.println("From inside the constructor of the GrandParent class.");
  }
}

//parent class
class Parent extends GrandParent {
  //constructor of Parent class
  Parent() {
    System.out.println("From inside the constructor of the Parent class.");
  }
}

//child class
class Child extends Parent {
  //constructor of Child class
  Child() {
    //calling the parent class constructor
    super();

    System.out.println("From inside the constructor of the Child class.");
  }
}

//the main class
public class Example {
  
  //the main method
  public static void main(String[] args) {

    //creating an object of the Child class
    Child obj = new Child();

  }
}
$javac Example.java 
$java Example
From inside the constructor of the GrandParent class.
From inside the constructor of the Parent class.
From inside the constructor of the Child class.

说明

因此,在上面的代码中,我们可以看到Child类继承了Parent类,而后者又继承了GrandParent类。

Child类的构造函数内部,我们通过使用super关键字调用Parent类的构造函数。

如果我们看一下上面的输出,可以看到首先调用了" GrandParent"类的构造函数。
然后调用"父类"的构造函数。
最后,将调用Child类的构造函数。

即使我们没有使用super()显式调用父类的构造函数,也会从子类中自动调用它。