黑马程序员技术交流社区

标题: 多态的题目 [打印本页]

作者: 邓浩宸    时间: 2015-12-7 22:55
标题: 多态的题目
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));
        }
}
作者: 邓浩宸    时间: 2015-12-7 22:56
解析看这
作者: 邓浩宸    时间: 2015-12-7 23:00
本帖最后由 邓浩宸 于 2015-12-7 23:04 编辑

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

继承就是将两个类的共性描述提取出来,
单独进行描述,从而简化代码,提高复用性。

作者: 邓浩宸    时间: 2015-12-7 23:11
明白这些之后,再来理解这题就很简单了
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-7 23:12
再根据我的一点点提示大家再做做,会不会有很大的发现
作者: 小小的程序员    时间: 2015-12-8 10:33
好好的理解了  让你整蒙圈了
作者: 断魂oo血狼    时间: 2015-12-8 12:01
完了蒙了  我在看看去
作者: 再续啸傲    时间: 2015-12-8 12:39
加油↖(^ω^)↗
作者: 王晓亮    时间: 2015-12-8 20:52
!!!!!
作者: 邓浩宸    时间: 2015-12-8 23:12
断魂oo血狼 发表于 2015-12-8 12:01
完了蒙了  我在看看去

加油,好好看看,你把这题整明白了,多态你就掌握的差不多了
作者: 邓浩宸    时间: 2015-12-8 23:14
小小的程序员 发表于 2015-12-8 10:33
好好的理解了  让你整蒙圈了

稳住
作者: 邓浩宸    时间: 2015-12-13 19:37
eddy1820 发表于 2015-12-9 22:48
明天要考試了,剛好可以拿來練習,感謝分享

不客气




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