- class Fu
- {
- Fu()
- {
- System.out.println("Fu run");
- }
- }
- class Zi extends Fu
- {
- Zi()
- {
- /**
- 子类的构造函数第一行有一条隐士的语句
- super();
- */
- System.out.println("Zi run");
- }
- Zi(int x)
- {
- System.out.println("Java");
- }
- }
- class ExtendsDemo4
- {
- public static void main(String[] args)
- {
- Zi z=new Zi();
- Zi z1=new Zi(4);
- }
- }
复制代码 在对子类对象进行初始化时,父类的构造函数也会运行:
因为:子类的构造函数默认第一行有一条隐式语句
super();
super():会访问父类中空参数的构造函数,
而且子类中所有的构造函数默认第一行都是
super();
为什么子类一定要访问父类中的构造函数:
因为父类中的数据子类可以直接获取,所以子类
对象在建立时,需要先产查看父类是如何
初始化的,所以子类在对象初始化时,要先
访问以下父类中的构造函数,如果要访问
父类中指定构造函数,可以通过手动定义
super语句的方式来指定.
super 语句一定定义在子类构造函数的第一行。
子类的实例化过程:
结论:
子类的所有的构造函数,默认都会访问父类中
空参数的构造函数,因为子类每一个构造函数内的
第一行都有一句隐式的super();
当父类中没有空参数的构造函数时,子类必须手动
通过super或this语句形式来指定要访问父类中的构造函数
当然:子类的构造函数第一行也可以手动指定this语句
来访问本类中的构造函数。子类中至少会有一个构造函数
会访问父类中的构造函数
学习进度比较慢,希望多和大家交流,打好基础!
|