美文网首页
java多态经典案例解析

java多态经典案例解析

作者: 移动端_小刚哥 | 来源:发表于2018-11-29 15:40 被阅读10次

    如下代码会打印出什么?

    public class A {
        public String show(D obj) {
            return ("A and D");
        }
    
        public String show(A obj) {
            return ("A and A");
        } 
    
    }
    
    public class B extends A{
        public String show(B obj){
            return ("B and B");
        }
        
        public String show(A obj){
            return ("B and A");
        } 
    }
    
    public class C extends B{
    
    }
    
    public class D extends B{
    
    }
    
    public class Test {
        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("1--" + a1.show(b));
            System.out.println("2--" + a1.show(c));
            System.out.println("3--" + a1.show(d));
            System.out.println("4--" + a2.show(b));
            System.out.println("5--" + a2.show(c));
            System.out.println("6--" + a2.show(d));
            System.out.println("7--" + b.show(b));
            System.out.println("8--" + b.show(c));
            System.out.println("9--" + b.show(d));      
        }
    }
    

    运行结果

    1--A and A
    2--A and A
    3--A and D
    4--B and A
    5--B and A
    6--A and D
    7--B and B
    8--B and B
    9--A and D
    

    考点

    继承链中方法调用的优先级来确认方法,该优先级为:this.show(O) > super.show(O) > this.show((super)O) > super.show((super)O)

    参考文章
    https://www.cnblogs.com/chenssy/p/3372798.html

    相关文章

      网友评论

          本文标题:java多态经典案例解析

          本文链接:https://www.haomeiwen.com/subject/sadfcqtx.html