子类对象初始化过程中构造函数调用的若干规则
来源:互联网 发布:java 返回值为泛型 编辑:程序博客网 时间:2024/06/05 03:15
1.如果父类中没有构造函数,即使用默认的构造函数,那子类的构造函数会自动调用父类的构造函数
输出结果0,说明子类的构造函数自动调用父类的无参构造函数,初始化父类的成员为0
2.如果父类中定义了无参构造函数,子类的构造函数会自动调用父类的构造函数
输出结果:father done
0
说明重写了默认的无参构造函数,子类自动调用这个函数,父类的成员还是被初始化为0.
3. 如果定义了有参构造函数,则不会有默认无参构造函数,这样的话子类在调用父类的午餐构造函数的时候会出错(没有用super调用父类有参构造函数的情况下)
输出结果:
Exception in thread "main" java.lang.NoSuchMethodError: Father: method <init>()V
not found
at Son. <init>(Son.java:5)
at ConstructionTest.main(ConstructionTest.java:6)
- class Father
- {
- private int a,b;
- void show()
- {
- System.out.println(a);
- }
- }
- class Son extends Father
- {
- private int c,d;
- Son(int c, int d)
- {
- this.c = c;
- this.d = d;
- }
- }
- public class ConstructionTest
- {
- public static void main(String args[])
- {
- Son s = new Son(2, 3);
- s.show();
- }
- }
2.如果父类中定义了无参构造函数,子类的构造函数会自动调用父类的构造函数
- class Father
- {
- private int a,b;
- Father(){System.out.println("father done");}
- void show()
- {
- System.out.println(a);
- }
- }
- class Son extends Father
- {
- private int c,d;
- Son(int c, int d)
- {
- this.c = c;
- this.d = d;
- }
- }
- public class ConstructionTest
- {
- public static void main(String args[])
- {
- Son s = new Son(2, 3);
- s.show();
- }
- }
0
说明重写了默认的无参构造函数,子类自动调用这个函数,父类的成员还是被初始化为0.
3. 如果定义了有参构造函数,则不会有默认无参构造函数,这样的话子类在调用父类的午餐构造函数的时候会出错(没有用super调用父类有参构造函数的情况下)
- //import java.io.*;
- class Father
- {
- private int a,b;
- Father(int a, int b){this.a = a; this.b = b;}
- void show()
- {
- System.out.println(a);
- }
- }
- class Son extends Father
- {
- private int c,d;
- Son(int c, int d)
- {
- this.c = c;
- this.d = d;
- }
- }
- public class ConstructionTest
- {
- public static void main(String args[])
- {
- Son s = new Son(2, 3);
- s.show();
- }
- }
输出结果:
Exception in thread "main" java.lang.NoSuchMethodError: Father: method <init>()V
not found
at Son. <init>(Son.java:5)
at ConstructionTest.main(ConstructionTest.java:6)
- 子类对象初始化过程中构造函数调用的若干规则
- 子类对象初始化过程中构造函数调用的若干规则
- Java中子类对象初始化的过程
- 创建子类对象会调用父类的初始化方法,而不只是构造函数
- c++中子类调父类构造函数的规则
- 黑马程序员--java中父类和子类都有构造方法时,子类对象的初始化过程
- Java中,关于在子类构造函数中调用父类构造函数完成对象创建的简单分析
- 《C++面向对象》在C++中子类继承和调用父类的构造函数方法
- java 子类对象的实例化 调用构造函数先后
- 在子类的构造函数中调用虚函数
- 面向对象,继承,父类子类,继承中构造函数问题,对象初始化器
- c++中 子类父类的构造函数调用顺序
- Java继承中调用子类构造函数
- 构造函数的调用规则
- 构造函数的调用规则
- 调用子类构造器来初始化子类对象时,父类构造器会在子类构造器之前执行
- 子类继承父类,那么子类实例化时对象调用的是父类还是子类的构造函数?
- 构造函数的初始化过程
- c++函数简述
- HttPWatch的使用
- Intel VT
- 织梦DedeCMS v5.7 完美实现导航条下拉菜单
- 这算是优化Myeclipse吗???取消Myeclipse-validation需谨慎!!!
- 子类对象初始化过程中构造函数调用的若干规则
- Windows下配置jdk、Android环境变量
- 关于计算机专业读研的看法(参考)
- MFC 表示控件
- c++ type traits
- find命令删除指定天数前的,以.txt, .xls, .jpg结尾的文件及jsp报Unable to compile class for JSP错误
- 将数组中的元素头尾两端依次对调
- 方法里的局部内部类为什么不能访问一般的方法里的局部变量?
- 收集一些漂亮的Web UI 组件