这个问题很好解决,你就想一个类继承另一个类,那么子类中的构造器中默认省略了super();这一行代码,这条代码代表什么?代表了它调用了父类的构造器。但是当我们new一个子类对象的时候,是new出了一个子类对象和一个父类对象吗?显然不是的。代码证明如下:
- public class Father
- {
- String name;
- int age;
-
- public Father(){}//无参构造器(系统默认)
-
- public Father(String name, int age)//有参构造器
- {
- this.name = name;
- this.age = age;
- }
- }
- public class Son extends Father {
- String school;
-
- public Son()
- {
- super();//这行代码不写的话,系统会默认加上并且隐藏的。它调用了父类构造器。
- }
- public Son(String name, int age, String school)
- {
- super.name = name;
- super.age = age;
- this.school = school;
- }
- }
- public class NewTest
- {
- public static void main(String[] args)
- {
- Son Jim = new Son();//new 一个子类,很明显子类构造器中调用了父类构造方法,所以只是创建了一个子类对象。
- }
- }
复制代码 |