A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Fu {
  2.         Fu() {
  3.                 super();
  4.                 [color=Red]show();[/color]
  5.                 return;
  6.         }

  7.         void show() {
  8.                 System.out.println("父类show");
  9.         }
  10. }

  11. class Zi extends Fu {
  12.         int num = 8;

  13.         Zi() {
  14.                 super();
  15.                 return;
  16.         }

  17.         void show() {
  18.                 System.out.println("子类show:" + num);
  19.         }
  20. }

  21. public class ExtendDemo {
  22.         public static void main(String[] args) {
  23.                 Zi z = new Zi();
  24.                 z.show();
  25.         }
  26. }
复制代码
关于继承中子父类的方法调用问题应当注意的一个小地方。(我一开始怎么都想不明白),后来终于想通了,特发给大家。
可能有些人对这些代码一看就懂,,但我还是想从最基本的开始说起
1,调用主函数,创建子对象后,调用show()方法,但这时不是调用show()方法,,
2,而是先执行子的构造方法,--super()---进入父类中执行父类的构造方法.
3,于是进入父类中的super()方法,,而父类的super是Object类,,当然什么也没有
4,下一步执行父类中的show()方法,这时父类中本身有show()方法,(我当时想的
应该直接调用父类中的show()方法,,这是错误的.)
5,在执行父类中的show()方法时,因子父类中是继承关系,在继承关系中调用方法都会从最下层开始执行
这个代码中就是先在子类中查找,正好有这个方法,于是就执行子类show()方法.
6,代码执行结果,,子类show:0
              子类show:8

评分

参与人数 1黑马币 +2 收起 理由
我了个去 + 2 很给力!

查看全部评分

1 个回复

倒序浏览
构造函数中可以出现return吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马