今天做了一道题,有关于继承
我在想,怎样让子类中的构造函数给它继承的父类的私有变量radius赋值,显然是要通过调用构造函数,在c++里,可以这样
Cylinder(double r,double h):Circle(r){
...(代码块)
}
但在Java中我试了一下,不行,百度一下之后,要调用super函数,这里有很多重难点。
1.首先我们得明白,继承是不会继承构造函数,只能调用(隐式或显式)
2.如果父类没有定义构造函数或者存在无参构造函数,所有子类的构造函数会默认调用父类的构造函数(即在最前面省略了super();)
3.如果父类没有无参的构造函数,或者是子类的构造函数想调用父类的含参构造函数(就像这题一样,我们希望调用Circle的含参构造函数来初始化radius),就要第一行显式使用super( [arg0][,arg1]….),显式调用的参数类型,参数个数和你想调用的父类构造函数对应,注意一定要写在第一行,否则编译不通过。