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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

fu{
  fu(){sop(...1);}
  fu(int x){sop(...2);}         
}
zi extends fu{
     zi(){
        super();//
        sop(...3);
        }
     zi(int x)
        {   //super();
            this();//如果子类的构造函数第一行写了this,则不会再调用super初始化父类。因为this和super只能定义在第一行。初始化动作要先执行。而this则访问了本子类对象的构造函数。
            sop(...4);
        }
}
class demo
{
   public static void main(..)
        {
        new zi(6);
        }
}
1.父类构造函数中也会有super();
父类的父类是睡呢?父类super调用的到底是谁的构造函数呢?
java体系再设计时,定义了一个所有对象的父类object。
总结:
   1.类中的构造函数默认第一行都有隐式的super函数语句,在访问父类中的构造函数。所以父类的构造函数既可以给自己的对象初始化,也可以给自己的子类对象初始化。
   2.如果默认的隐式super没有对应的构造函数,必须在构造函数中通过this或者super的形式明确调用的构造函数。
   3.this语句和super语句是不可以在同一个构造函数中出现的,必须都定义在第一行。初始化动作必须要先执行。

//子类的实例化过程的应用,也是super调用的应用。
  什么时候用super调用父类中构造函数,只要使用父类的指定初始化动作,就在子类中通过super(参数)格式进行调用。

0 个回复

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