A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 大牛1 中级黑马   /  2016-5-26 18:12  /  241 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

继承中构造方法的关系:
            A.  子类中所有的构造方法默认都会访问父类中空参数的构造方法;
            B.    为什么呢?
                        因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前一定要先完成父类数据的初始化。
                                     a. 数据在使用之前必须初始化。对于成员变量可以使用默认值。
                                     b. 那么问题来了?难道成员方法不需要初始化吗?成员方法是怎么初始化的?
          注意:
                     子类每一个构造方法的第一条语句默认都是: super( ) ;
                  
如果父类中没有无参构造方法。那么在子类的构造方法默认调用父类的无参构造方法时就会出错。这是有两个解决办法:
       1.  在父类中写出父类的无参构造方法;
        2.  在子类的每一个构造方法中都显式的调用父类的有参构造方法。即:super(……) ;
         3. 在子类的构造方法的第一句调用 this(……)语句。前提是this关键字调用的构造方法已经调用了父类的构造方法。
注意:
                this(……)和super(……)必须出现在第一条语句上。
如果不是在第一句上,第一句就可能会默认调用父类的无参构造方法。导致多次调用父类的构造方法。会报错。
                     


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马