黑马程序员技术交流社区
标题:
子父类继承中要注意的一个问题,,一不小心,你就会犯
[打印本页]
作者:
0618张军
时间:
2015-7-9 22:30
标题:
子父类继承中要注意的一个问题,,一不小心,你就会犯
class Fu {
Fu() {
super();
[color=Red]show();[/color]
return;
}
void show() {
System.out.println("父类show");
}
}
class Zi extends Fu {
int num = 8;
Zi() {
super();
return;
}
void show() {
System.out.println("子类show:" + num);
}
}
public class ExtendDemo {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
复制代码
关于继承中子父类的方法调用问题应当注意的一个小地方。(我一开始怎么都想不明白),后来终于想通了,特发给大家。
可能有些人对这些代码一看就懂,,但我还是想从最基本的开始说起
1,调用主函数,创建子对象后,调用show()方法,但这时不是调用show()方法,,
2,而是先执行子的构造方法,--super()---进入父类中执行父类的构造方法.
3,于是进入父类中的super()方法,,而父类的super是Object类,,当然什么也没有
4,下一步执行父类中的show()方法,这时父类中本身有show()方法,(我当时想的
应该直接调用父类中的show()方法,,这是错误的.)
5,在执行父类中的show()方法时,因子父类中是继承关系,在继承关系中调用方法都会从最下层开始执行
这个代码中就是先在子类中查找,正好有这个方法,于是就执行子类show()方法.
6,代码执行结果,,子类show:0
子类show:8
作者:
very爱
时间:
2015-7-9 23:21
构造函数中可以出现return吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2