- 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 |