package demo2;
public class Main {
public static void main(String[] args) {
Grandson b = new Grandson();
/**
* 子类new对象时,会调用父类的构造方法(如果还有父类,会一直向上调用父类的构造方法)
* 当其中的某个父类的构造方法被修改为有参的,
* 那么需要这个父类的子类传递一个参数,否则会报错,
* 或者自己写一个该父类的无参构造方法
*/
System.out.println("红火火恍恍惚惚");
b.addddd(); // 子类创建的对象,可以一直向上调用父类,父父类的方法,
//比如调用根类Object中的方法
}
}
package demo2;
public class Grandson extends Son{
Grandson() {
System.out.println("**********55555**********");
System.out.println("调用子类Subtine构造方法");
System.out.println("**********66666**********");
}
}
package demo2;
public class Son extends Father{
public Son() {
super(5);
System.out.println("**********33333**********");
System.out.println("调用子类Subparent构造方法");
System.out.println("**********44444**********");
}
}
package demo2;
public class Father extends Grandpa{
/*Parent() {
}*/
Father(int a) {
System.out.println("**********11111**********");
System.out.println("调用父类Parent构造方法"+a);
System.out.println("**********22222**********");
}
}
package demo2;
public class Grandpa {
void addddd() {
System.out.println("**********77777**********");
}
public Grandpa() {
System.out.println("**********-1111**********");
System.out.println("父类的父类的构造方法");
System.out.println("**********00000**********");
}
}
**********-1111**********
父类的父类的构造方法
**********00000**********
**********11111**********
调用父类Parent构造方法5
**********22222**********
**********33333**********
调用子类Subparent构造方法
**********44444**********
**********55555**********
调用子类Subtine构造方法
**********66666**********
红火火恍恍惚惚
**********77777**********