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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雯雯暖暖 中级黑马   /  2014-9-3 20:01  /  1470 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class Fu
  2. {
  3.         Fu(){
  4.                 show();
  5.         }
  6.         void show()
  7.         {
  8.                 System.out.println("fu show");
  9.         }
  10. }

  11. class Zi extends Fu{
  12.         int num=8;
  13.         Zi(){
  14.                 super();
  15.         }
  16.         void show()
  17.         {
  18.         System.out.println("zi show  "+num);
  19.         }
  20. }
复制代码


各位大神,为什么Zi z=new Zi();的结果是 zi show   0, 我的理解是fu show.求教!

7 个回复

倒序浏览
你子类把父类的show方法覆盖了啊
回复 使用道具 举报
第一个问题,输出子类的show而不输出父类的show();父类里面的构造函数里,第一句是super(),也就是继承的Object,再下一句是显示初始化,而父类里面没有任何可显示初始化的成员变量,再下一句是show();,而子类的show()覆盖了父类的show();,在执行第四行的时候就直接执行子类的show();了,第二个问题,子类还没有显示初始化呢,所以num并没有值,而是默认的0.
回复 使用道具 举报 1 0
本帖最后由 范鹏霄 于 2014-9-3 21:10 编辑

因为实例化子类调用的是父类的构造方法,super()就是调用父类构造方法
回复 使用道具 举报
多态真乱 越看越不懂了
回复 使用道具 举报
lq你微笑时好美 来自手机 中级黑马 2014-9-3 23:53:49
地板
这是方法重写啊,子类重写父类方法,所以输出zi show.还有就是父类没有成员变量,子类访问不到,输出默认值0
回复 使用道具 举报
lq你微笑时好美 来自手机 中级黑马 2014-9-3 23:56:02
7#
简单易懂…多态真是绕的晕晕的
回复 使用道具 举报
new的是构造方法,子类复写父类构造方法,但开始是默认初始化没有显示初始化所以结果就是0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马