Java为什么要在类中声明一个无参构造方法
在Java程序编写中,子类的构造方法必定会调用父类的构造方法,如果在子类的构造方法中没有指定调用父类的哪个构造方法,在实例化子类对象时,子类会默认调用父类的无参构造方法。如果在父类中没有定义无参构造方法的话,编译会报错。
下面是一个实际例子。
class Animal{// 定义有参的构造方法Animal(String race){System.out.println('I'm a/an '+ race);}}// 定义Dog类,继承自Animal类class Dog extends Animal{Dog(){super('Hasky');}}public class Test{public static void main(String[] args) {Dog dog = new Dog();}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
上面的Animal类中定义了有参的构造方法,Dog类继承Animal类,并且在构造方法中调用了父类的有参构造方法,结果如下:
如果去掉Dog类的构造方法中对父类有参构造方法调用的语句,那么Dog类在实例化对象时就会默认调用父类的无参构造方法,而由于程序中没有定义Animal类的无参构造方法,故而会导致编译报错。
因此在类中声明一个无参构造函数可以避免其子类在实例化对象时出错。
赞 (0)