黑马程序员技术交流社区

标题: 多肽难题分析 [打印本页]

作者: 卞卞    时间: 2015-12-6 15:53
标题: 多肽难题分析
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));
        }
}
/*
跟大家解释一下这道题:
首先应该明白 A a2 = new B()是创建一个B对象并把它转换成A对象。
对于a1它是A类的对象有函数show(D),show(A),a2是B对象,然后转换成A那么它拥有的函数是show(d),show(A)此时A已覆盖,即返回值为(“B and A”)。b是一个B的对象,有函数show(D)(继承A),show(A)覆盖A,show(B)子类自有函数。C和D是B的子类。
a1.show(b)是在A中找到满足条件的方法,调用show(A)函数。result:A and A
a1.show(c)在A中找到show(A).result: A and A
a1.show(d)在A中找到show(D).result: A and D
a2.show(b)在它拥有的函数中找到被B覆盖过的show(A).result: B and A
a2.show(c)找到被B覆盖过的show(A).result: B and A
a2.show(d)show(D)result A and D
b.show(b) show(B) result:B and B
b.show(c) show(B) result: B and B
b.show(d) 上找到A中的show(D) result: A and D

a2.show(d)*/





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