黑马程序员技术交流社区

标题: 构造函数 [打印本页]

作者: treecolor166    时间: 2014-1-7 14:18
标题: 构造函数
本帖最后由 treecolor166 于 2014-1-9 22:01 编辑

为什么子类继承了父类,在创建子类对象的时候会先执行父类的构造器
作者: 嘿╰_╯往哪里跑    时间: 2014-1-7 14:23
子类实例化生成对象时,把这个类加载到JVM上,会先生成类的实例,但是new关键字有一个特殊的性质就是会先调用类的无参构造方法,如果这个类继承了父类,则子类实例化时,会先调用父类的无参构造方法,是类的一个初始化的顺序问题
作者: 猎鹰tianya    时间: 2014-1-7 14:39
个人理解是这样的:创建一个对象的时候初始化是必须要做的一件事。

因为子类对象继承了父类的属性和方法,所以要先对这些属性和方法进行初始化
这时就会调用父类的构造方法先进行一次初始化,然后子类自己再进行初始化!
------------我承认,理论的东西,我将不太清楚{:soso_e135:}---------------------------




作者: 黄晓鑫    时间: 2014-1-7 14:52
因为子类对象中的构造方法里面有一个隐式的super()
作者: 范晓冲    时间: 2014-1-7 17:45

子类继承父类,首先应该完成父类的构造函数,因为有可能后面会用到或者修改父类的一些资源,因此得先初始化父类
class Person{
                private String name;
          public Person(String name){
                                this.name=name;
          }       
}

public class Teacher extends Person{
          private int age;
                public Teacher(String name,int age){
                                super();        //等价与  this.name=name;
                                this.age=age;
                }       
               
                public void speak(){
                                System.out.println(" 我要进云八!");       
                }
               
                public static void main(String[] args){
                                Teacher t=new Teacher("zhangSann",23);       
                                t.speak();
                }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2