Java继承--子父类中的构造函数

子父类中的构造函数的特点:  

1.在子类构造对象时,发现,访问子类构造函数时,父类构造函数也运行了。
   原因是:在子类的构造函数中第一行有一个默认的隐式语句。 super();

   类似于this();   this();调用的是本类的构造函数

2.子类构造函数默认调用的是父类中的空参数构造函数,如果需要调用父类中带参数的构造函数,可以在子类构造函数中定义。如:super(6);

3.如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数。

4.同时子类构造函数中如果使用this调用了本类构造函数时,那么super就没有了,因为super和this都只能定义第一行,所以只能有一个。但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。

5.Object是所有类的父类。

注意:supre语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。

例:

 1 class Fu
 2 {
 3     int num ;
 4     Fu()
 5     {
 6         num =10;
 7         System.out.println("A fu run");
 8     }
 9     Fu(int x)
10     {
11         System.out.println("B fu run..."+x);
12     }
13 }
14 class Zi extends Fu
15 {
16     int num;
17     Zi()
18     {
19         //super();//调用的就是父类中的空参数的构造函数。
20                   //类似于this() 调用的是本类的构造函数 
21         
22         System.out.println("C zi run"+num);
23     }
24     Zi(int x)
25     {
26         this();
27 //        super(x); //如果需要调用父类中带参数的构造函数,可以在子类构造函数中定义。
28         System.out.println("D zi run "+x);
29     }
30 }
31 
32 class  ExtendsDemo4
33 {
34     public static void main(String[] args) 
35     {
36         new Zi(6);
37     }
38 }
39 class Demo//extends Object  //Object是所有类的父类
40 {
41     /*
42     
43     Demo()
44     {
45         super();
46         return;
47     }
48     */
49 }

 

posted @ 2017-02-09 18:28  Kkky  阅读(13778)  评论(0编辑  收藏  举报