您的位置:首页 > 编程语言 > Java开发

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

2015-04-16 23:25 169 查看
   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类也是如此。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息