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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© okchenyang44 中级黑马   /  2016-5-21 23:16  /  505 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Test2_Polymorphic {
        public static void main(String[] args) {
                /*A a = new B();
                a.show();*/
               
                B b = new C();
                b.show();
        }
}
class A {
        public void show() {
                show2();
        }
        public void show2() {
                System.out.println("我");
        }
}
class B extends A {
        public void show() {
                show2();
        }
        public void show2() {
                System.out.println("爱");
        }
}
class C extends B {
        public void show() {
                super.show();
        }
        public void show2() {
                System.out.println("你");
        }
}


5 个回复

倒序浏览
编译看父类,运行看子类,这个题目是输出是爱你
回复 使用道具 举报
今天才学过
回复 使用道具 举报
题目运用了面向对象多态的概念:
使用多态性3个必须条件:
1:需要继承关系    2:父类的引用指向子类的对象   3:子类需要重写父类的方法
多态有编译时类型,运行时类型
编译时类型

,运行时类型
回复 使用道具 举报

题目运用了面向对象多态的概念:
使用多态性3个必须条件:
1:需要继承关系    2:父类的引用指向子类的对象   3:子类需要重写父类的方法
多态有编译时类型,运行时类型
编译时类型:
  B b = new C(); 父类的引用变量指向子类的对象,B.show()方法,虚拟机检测父类有没有该方法,如果父类没有该方法,则编译出错
  运行时类型:运行的类型看子类
我就会这么多了,希望能够解答你的疑惑。。
回复 使用道具 举报
输出的是"爱你"
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马