黑马程序员技术交流社区

标题: 小白最近遇到的问题,求大神帮忙 [打印本页]

作者: jie0258    时间: 2017-4-16 13:30
标题: 小白最近遇到的问题,求大神帮忙
最近刚学面向对象,遇到点问题不能理解
class A {
         public String show(D obj)...{
                return ("A and D");
         }
         public String show(A obj)...{
                return ("A and A");
         }
}
class B extends A{
         public String show(B obj)...{
                return ("B and B");
         }
         public String show(A obj)...{
                return ("B and A");
         }
}
class C extends B...{}
class D extends B...{}


        A a1 = new A();
        A a2 = new B();
System.out.println(a2.show(b));   ④  B AND A
System.out.println(a2.show(c));        B and  A
求帮忙分析下这两句的调用过程
作者: 94651417    时间: 2017-4-16 13:36
貌似有点儿乱

作者: jie0258    时间: 2017-4-16 13:41
94651417 发表于 2017-4-16 13:36
貌似有点儿乱

这个只写了单个类和各自的继承关系:
结果就是 B and A
但就是不理解怎么调用的
作者: zeng1002    时间: 2017-4-17 00:13
手机看的貌似代码显示不全,a2调show里面传的参数都看不出来是啥

作者: 郝永    时间: 2017-4-17 00:15
要看b和c的类型是什么,然后是多态调用方法,如果子父类都有,则调用子类,如果子类特有的,针对这道题看参数继承属于关系,所以这道题走了子类的public String show(A obj)这个方法....个人理解
作者: Damonlalala    时间: 2017-4-17 02:02
这题好绕...........
多态调用方法,编译看左边也就是父类,当父类中有这个方法(包括参数形式是传入参数的父类);  
这时候去看子类中有没有重写这个方法,如果有,用子类的,如果没有用自己的;   

作者: 94651417    时间: 2017-4-17 07:41
哪里来的题目?

作者: 小小小人物    时间: 2017-4-21 20:44
我想知道这个  s2.show(b)  和s2.show(c)
这个b和c  哪里来的




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