关于子类调用父类构造方法的研究

 1 public class  Test
 2 {
 3     
 4     public static void main(String args[])
 5     {
 6         new SonClass();
 7     }
 8 }
 9  class FatherClass
10 {
11     FatherClass()//父类的构造方法
12     {
13         System.out.println("This is Father Class.");
14     }
15 }
16 class SonClass extends FatherClass
17 {    //子类会先调用父类的构造方法
18     SonClass()
19     {
20         System.out.println("This is Son Class.");
21     }
22 }
23 /*
24  * 输出结果为:
25  * This is Father Class.
26  * This is Son Class.
27  */
 1 public class  Test
 2 {
 3     
 4     public static void main(String args[])
 5     {
 6         new SonClass();
 7     }
 8 }
 9  class FatherClass
10 {
11     FatherClass()//父类的构造方法
12     {
13         System.out.println("This is Father Class.");
14     }
15     FatherClass(int para)//父类带参数的构造方法
16     {
17         System.out.println("This is Father Class with parameter.");
18     }
19 }
20 class SonClass extends FatherClass
21 {    //子类会先调用父类的无参构造方法
22     SonClass()
23     {
24         System.out.println("This is Son Class.");
25     }
26 }
27 /*
28  * 子类会调用父类的无参构造方法
29  * 输出结果为:
30  * This is Father Class.
31  * This is Son Class.
32  */

如果父类没有无参构造方法,而子类的构造不显示调用父类的带参数的构造方法super(para),则程序不能运行。

 1 public class  Test
 2 {
 3     
 4     public static void main(String args[])
 5     {
 6         new SonClass();
 7     }
 8 }
 9  class FatherClass
10 {
11     //FatherClass()//父类的构造方法
12     //{
13     //    System.out.println("This is Father Class.");
14     //}
15     FatherClass(int para)//父类带参数的构造方法
16     {
17         System.out.println("This is Father Class with parameter:" + para);
18     }
19 }
20 class SonClass extends FatherClass
21 {    //子类会先调用父类的无参构造方法
22     int para = 0;
23     SonClass()//此处出现错误
24     {
25         //super(2);
26         System.out.println("This is Son Class.");
27     }
28 }

在子类中调用父类的带参数的构造方法:

 1 public class  Test
 2 {
 3     
 4     public static void main(String args[])
 5     {
 6         new SonClass();
 7     }
 8 }
 9  class FatherClass
10 {
11     //FatherClass()//父类的构造方法
12     //{
13     //    System.out.println("This is Father Class.");
14     //}
15     FatherClass(int para)//父类带参数的构造方法
16     {
17         System.out.println("This is Father Class with parameter:" + para);
18     }
19 }
20 class SonClass extends FatherClass
21 {    //子类会先调用父类的无参构造方法
22     int para = 0;
23     SonClass()//
24     {
25         super(2);//调用父类带参数的构造方法,如果把参数2换成para会出现错误,但是当 para 用 static修饰时是可以的,
26                 //是不是因为在用类建立一个对象之前para是不存在的,但是如果 para 为static时,para在类中是存在的。
27         System.out.println("This is Son Class.");
28     }
29 }
30 /*
31  * 子类会调用父类的无参构造方法
32  * 输出结果为:
33  * This is Father Class with parameter:2
34  * This is Son Class.
35  */

 

posted @ 2013-11-05 11:06  soul390  阅读(374)  评论(0编辑  收藏  举报