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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

最近刚学面向对象,遇到点问题不能理解
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
求帮忙分析下这两句的调用过程

7 个回复

正序浏览
我想知道这个  s2.show(b)  和s2.show(c)
这个b和c  哪里来的
回复 使用道具 举报
回复 使用道具 举报
这题好绕...........
多态调用方法,编译看左边也就是父类,当父类中有这个方法(包括参数形式是传入参数的父类);  
这时候去看子类中有没有重写这个方法,如果有,用子类的,如果没有用自己的;   
回复 使用道具 举报
要看b和c的类型是什么,然后是多态调用方法,如果子父类都有,则调用子类,如果子类特有的,针对这道题看参数继承属于关系,所以这道题走了子类的public String show(A obj)这个方法....个人理解
回复 使用道具 举报
手机看的貌似代码显示不全,a2调show里面传的参数都看不出来是啥
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报

这个只写了单个类和各自的继承关系:
结果就是 B and A
但就是不理解怎么调用的
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马