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

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("你");
        }
}

20 个回复

正序浏览
zhangshouwei 发表于 2016-5-23 23:38
class b的里面的show方法调用show2() 就跑到class C的show 2输出"你"啊--------------为什么跑到classC的 ...

运行看右边
回复 使用道具 举报
心飞扬哈哈 发表于 2016-5-22 22:34
运行看右边开始调用的是class C 里面的show b,  show b里面有个super 就又跑到classs b里面找show方法
cla ...

class b的里面的show方法调用show2() 就跑到class C的show 2输出"你"啊--------------为什么跑到classC的show2?
回复 使用道具 举报
就是循环调用
回复 使用道具 举报
顶贴是一种美德
回复 使用道具 举报
因为c继承了b
回复 使用道具 举报
革命卍 发表于 2016-5-22 22:54
冯佳老师的视频里详细的讲解

class b的里面的show方法调用show2() 就跑到class C的show 2输出"你"啊.---------没解释清楚最后一点
回复 使用道具 举报
心飞扬哈哈 发表于 2016-5-22 22:34
运行看右边开始调用的是class C 里面的show b,  show b里面有个super 就又跑到classs b里面找show方法
cla ...

调用show2() 就跑到class C的show 2输出"你"啊.-------------为什么
回复 使用道具 举报
你new的是C对象,所以调用的是他的方法,因为show()这个方法子类父类都有,所以会调用子类的。
回复 使用道具 举报
你new的是C对象,所以调用的是他的方法
回复 使用道具 举报
编译看左边,运行看右边,是指父类引用指向子类对象,
回复 使用道具 举报
学习ing......
回复 使用道具 举报
学习学习               
回复 使用道具 举报
编译看左边,运行看右边
回复 使用道具 举报
简单来说,这个就是多态里面的父类引用指向子类对象,规则是编译看左边(父类),如果父类有那个成员方法,则运行看右边(子类),属于动态绑定,详解可以看官网第九天课程,多态里面的内容,冯佳老师讲解
回复 使用道具 举报
冯佳老师的视频里详细的讲解
回复 使用道具 举报
我还没有达到这个层次
回复 使用道具 举报
子类都重写了父的方法,创建的是子类对象,只要子类有的都会运行子类
回复 使用道具 举报
show2是用的C里面的,谁调用就用谁的
回复 使用道具 举报
运行看右边开始调用的是class C 里面的show b,  show b里面有个super 就又跑到classs b里面找show方法
class b的里面的show方法调用show2() 就跑到class C的show 2输出"你"啊
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马