NRE的编程笔记

导航

继承之构造方法

 1 public class Test : Test2//子类
 2 {
 3     public Test():base()
 4     {
 5     }
 6 
 7     public Test(int a) : base(a)//将子类构造函数的参数传给父类的构造函数
 8     {
 9         //.....
10     }
11 
12 }
13 
14 public class Test2//父类
15 {
16     public int a;
17 
18     public Test2()
19     {
20     }
21 
22     public Test2(int a)
23     {
24         //.....
25     }
26 }

上面的代码是我们在使用继承时,子类和父类的构造函数的写法。构造方法能否被继承,我觉得应该这样理解:

        父类是对子类的抽象,也就是说父类和子类可以合并写成一个类,合并后的类写出来的构造函数,不仅会包含子类的构造函数的内容,还会包含父类的构造函数的内容,所以我觉得这里不能看成是子类继承父类的构造函数,看成是子类调用父类的构造函数应该更合理一些。在继承之后,子类在实例化时,会先调用父类的构造函数,再调用自己的构造函数,和我们不用继承,合并写成一个类的构造函数有异曲同工之妙。所以子类不能继承父类的构造函数。

 

继承中的构造方法一些特殊规定:

子类的构造方法中必须调用父类的构造方法,且将父类的构造方法写在子类构造方法体的第一行。

若子类构造方法没有显示地调用父类的构造方法,则系统默认调用父类中无参数的构造方法。

posted on 2017-11-23 22:52  NRE  阅读(407)  评论(6编辑  收藏  举报