黑马程序员技术交流社区
标题: 子类。父类构造方法的特点 没有理解啊 请高手指点啊 [打印本页]
作者: 黑马王晓明 时间: 2013-7-26 23:41
标题: 子类。父类构造方法的特点 没有理解啊 请高手指点啊
本帖最后由 黑马王晓明 于 2013-7-27 00:07 编辑
- <package test;
- class Fu
- {
-
- Fu(int x){
- super();
- System.out.println("fu...run");
- }
- }
- class Zi extends Fu
- {
- Zi(){
- this(4);
- System.out.println("zi...run");
- }
- Zi(int y){
- this(3,4);
- System.out.println("zi...run.......y");
- }
- Zi(int z,int a){
- super(1111);
- System.out.println("zi...run.......z");
- }
- }
- class ExtendsDemo
- {
- public static void main(String[] args)
- {
- new Zi();
- }
- }
- >
复制代码 运行结果:fu...runzi...run.......z
zi...run.......y
zi...run
它们的执行顺序是什么样的,还有其中包含了哪些知识点,越详细越好,请教啊 指点啊 谢谢啊
作者: py强子 时间: 2013-7-26 23:52
本帖最后由 py强子 于 2013-7-26 23:56 编辑
子父类构造函数的特点:
1.在对子类对象进行初始化时,父类的构造函数也会运行。
2.那是因为子类的构造函数默认第一行有一条隐式的语句super();
3.Super():会访问父类中空参数的构造函数,而且子类中所有的构造函数默认第一行都是super();
为什么子类一定要访问父类的构造函数?
因为父类中的数据,子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的,
所以子类在对象初始化时,要先访问一下父类中的构造函数,
如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。
子类中至少会有一个构造函数访问父类中的构造函数。
例子:
class Fu
{
int num = 2;
Fu()
{
System.out.println("fu");
}
}
class Zi extends Fu
{
Zi()
{
//super();
System.out.println("zi");
}
Zi(int x)
{
//super();
System.out.println("zi"+x);
}
}
class ExtendsDemo3
{
public static void main(String[] args)
{
Zi z = new Zi();
Zi z1 = new Zi(4);
}
}
作者: 黑马王晓明 时间: 2013-7-27 00:02
非常感谢啊 现在我已经恍然大悟了 “理解”万岁啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |