黑马程序员技术交流社区

标题: 这道题怎么解 [打印本页]

作者: okchenyang44    时间: 2016-5-21 23:16
标题: 这道题怎么解
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("你");
        }
}



作者: 即墨    时间: 2016-5-21 23:18
编译看父类,运行看子类,这个题目是输出是爱你
作者: 归宿123    时间: 2016-5-21 23:27
今天才学过
作者: My_Android    时间: 2016-5-22 00:30
题目运用了面向对象多态的概念:
使用多态性3个必须条件:
1:需要继承关系    2:父类的引用指向子类的对象   3:子类需要重写父类的方法
多态有编译时类型,运行时类型
编译时类型

,运行时类型
作者: My_Android    时间: 2016-5-22 00:37

题目运用了面向对象多态的概念:
使用多态性3个必须条件:
1:需要继承关系    2:父类的引用指向子类的对象   3:子类需要重写父类的方法
多态有编译时类型,运行时类型
编译时类型:
  B b = new C(); 父类的引用变量指向子类的对象,B.show()方法,虚拟机检测父类有没有该方法,如果父类没有该方法,则编译出错
  运行时类型:运行的类型看子类
我就会这么多了,希望能够解答你的疑惑。。
作者: hanshichao    时间: 2016-5-22 01:07
输出的是"爱你"




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2