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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 第一枭雄 中级黑马   /  2013-5-13 21:09  /  1839 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

求教……

继承多态.png (35.23 KB, 下载次数: 0)

继承多态.png

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

7 个回复

倒序浏览
  下面的两种情况就不说了    图上有另一种多态的情况:希望可以帮到你                                
                                 Zi   zi=new Zi();
                System.out.println(zi.x);
                zi.show();
                System.out.println();
                Fu  fu=new Fu();
                System.out.println(zi.x);
                fu.show();      

无标题.png (233.29 KB, 下载次数: 0)

无标题.png

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
纠正一下  是3  和Zi    ......run
回复 使用道具 举报
上面的多态和继承        我做一下纠正,楼主问他同名的变量怎么打印的是父类的,我这样给你解释:
因为你在父类里面已经定义了一个变量,在子类里面就没有必要去再定义一个相同名字的变量了,因为子类已经继承了父类,那个变量也跟着继承下来了,看代码体会一下:


如下:
class  Demo
{
        public static void main(String[] args)
        {
        /*        Zi   zi=new Zi();
                System.out.println(zi.x);
                zi.show();
                System.out.println();
                Fu  fu=new Fu();
                System.out.println(zi.x);
                fu.show();*/
                System.out.println();
                Fu  fu1=new Zi();
                System.out.println(new Zi().x);        //3
                System.out.println(fu1.x);                  //3
                System.out.println(new Zi().y);       //6
                fu1.show();
        }
}
class  Fu
{
        int x=3;
        void show()
        {
                System.out.print("fu...run");
        }
}

class  Zi extends Fu
{
        int y=6;
        void show()
        {
                System.out.print("Zi...run");
        }
}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
赵利斌 发表于 2013-5-13 23:16
上面的多态和继承        我做一下纠正,楼主问他同名的变量怎么打印的是父类的,我这样给你解释:
因为你 ...

谢谢了,但是……似乎你没看懂我问什么
其实……我想说……他怎么运行的,出什么样的结果我都知道……
我只是想问遍java的人为什么要这样编运行机制,为什么要这么定义,有什么好处
或者说如果成员变量和成员方法一样的覆盖、多态会有什么不好的问题
回复 使用道具 举报
它都没有必要再定义了,还考虑那么多   钻牛角尖
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马