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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓浩宸 中级黑马   /  2015-12-7 22:55  /  962 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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{}

class  DynamicTest
{       
        public static void main(String[] args){
       
                A a1 = new A();  
                A a2 = new B();  
                B b = new B();  
                C c = new C();   
                D d = new D();   
                System.out.println(a1.show(b));  
                System.out.println(a1.show(c));  
                System.out.println(a1.show(d));  
               
                System.out.println(a2.show(b));

                System.out.println(a2.show(c));  
                System.out.println(a2.show(d));
                       

                System.out.println(b.show(b));   
                System.out.println(b.show(c));  
                System.out.println(b.show(d));
        }
}

评分

参与人数 1黑马币 +4 收起 理由
乔慧明 + 4

查看全部评分

13 个回复

倒序浏览
解析看这
回复 使用道具 举报
本帖最后由 邓浩宸 于 2015-12-7 23:04 编辑

首先理解多态的的前提是什么.
1,要有继承,或者实现
2,要有方法的重写
3,父类引用指向子类对象
回复 使用道具 举报
本帖最后由 邓浩宸 于 2015-12-7 23:04 编辑

继承就是将两个类的共性描述提取出来,
单独进行描述,从而简化代码,提高复用性。
回复 使用道具 举报
明白这些之后,再来理解这题就很简单了
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(D obj){  //这是继承A父类的 show(D obj)方法
                return ("A and D");  
        }   
        public String show(B obj){  //这是子类B特有的方法,父类A中没有
                return ("B and B");  
        }
       
        public String show(A obj){  //因为方法名和show(A obj)参数列表相同,这是复写父类B的show(A obj)方法,
                return ("B and A");  
        }   
}

class C extends B{
public String show(D obj){  //这是继承父类B的 show(D obj)方法
                return ("A and D");  
        }   
        public String show(B obj){  
                return ("B and B");  
        }
       
        public String show(A obj){  
                return ("B and A");  
}

class D extends B{
public String show(D obj){  //这是继承父类B的 show(D obj)方法
                return ("A and D");  
        }   
        public String show(B obj){  //这是继承父类B的 方法
                return ("B and B");  
        }
       
        public String show(A obj){   //这是继承父类B的 方法
                return ("B and A");  
}

class  DynamicTest
{       
        public static void main(String[] args){
       
                A a1 = new A();  
                A a2 = new B();  
                B b = new B();  
                C c = new C();   
                D d = new D();   
                System.out.println(a1.show(b));  
                System.out.println(a1.show(c));  
                System.out.println(a1.show(d));  
               
                System.out.println(a2.show(b));

                System.out.println(a2.show(c));  
                System.out.println(a2.show(d));
                       

                System.out.println(b.show(b));   
                System.out.println(b.show(c));  
                System.out.println(b.show(d));
        }
}
回复 使用道具 举报
再根据我的一点点提示大家再做做,会不会有很大的发现
回复 使用道具 举报
好好的理解了  让你整蒙圈了
回复 使用道具 举报
完了蒙了  我在看看去
回复 使用道具 举报
再续啸傲 来自手机 中级黑马 2015-12-8 12:39:38
9#
加油↖(^ω^)↗
回复 使用道具 举报
!!!!!
回复 使用道具 举报
断魂oo血狼 发表于 2015-12-8 12:01
完了蒙了  我在看看去

加油,好好看看,你把这题整明白了,多态你就掌握的差不多了
回复 使用道具 举报
小小的程序员 发表于 2015-12-8 10:33
好好的理解了  让你整蒙圈了

稳住
回复 使用道具 举报
明天要考試了,剛好可以拿來練習,感謝分享
回复 使用道具 举报
eddy1820 发表于 2015-12-9 22:48
明天要考試了,剛好可以拿來練習,感謝分享

不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马