Java继承关系构造函数的调用

来源:互联网 发布:800002711零点网络 编辑:程序博客网 时间:2024/05/16 19:09

   Java中的对象封装是面向对象编程思想的完美体现,但在Java的类继承关系中,各父类和子类之间的关系到底是怎样的呢?

本文就Java基础中父类及子类的构造方法参数传递讨论其关系。 若有这样的关系:爷爷、父亲及儿子,父亲继承自爷爷,儿子继承自父亲,代码如下:

创建爷爷类:

public class Grandpa {
   
private String name;


public Grandpa(String name){
this.name=name;
System.out.println("my name is "+name);
  }
public void mySelf(){
System.out.println(name);
  }
}

创建继承自爷爷类的父亲类:

public class Father extends Grandpa {
    public Father(String name){
    super(name);
   
    }
}

创建继承自父亲的儿子类:

public class Son extends Father{
       public Son(String name){
      super(name);
       }
}

在执行类的主函数中实例化这三个类,并调用爷爷类中的mySelf()方法

public class Test {


public static void main(String[] args) {
Son son=new Son("abc");

                Father father=new Father("def");

Grandpa grandpa=new Grandpa("123");

                 son.mySelf(); 

                father.mySelf();  

                grandPa.mySelf();                

}


}

执行结果为:

abc

def

123

在实例化Son类是其构造函数传入的参数name在实例化的过程中实质上所传递的路线为下图所示:



super是对父类进行调用,在son的构造函数中使用super()实际上是直接调用了父类的构造函数(即Father类),同样Father类的构造函数使用super()调用了它的父类GrandPa类的构造函数,所以在Son(String name)这个构造函数中所传入的参数传入到函数中的super(name)中,从而传入到父类Father的构造函数中,在传入到GrandPa中,最终使用了Son(String name)这个构造函数中的参数完成了对最终父类构造函数的调用,同样Father类也是如此。








0 0