zoukankan      html  css  js  c++  java
  • java多态

    重载Overloading是一个类中多态性的一种表现;
    重写Overriding是父类与子类之间多态性的一种表现。

    重载和重写时,方法调用顺序的规则:
    1 首先是看调用顺序:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)、this.show(super((super)O))、super.show(super((super)O))。。。。。。直到找到符合的方法。

    例:

    类A
    类B extend A
    A a1 = new A();//this为A
    A a2 = new B();//this为A
    2 最后看子类有没有覆盖这个方法,如果子类重写了这个方法,则调用的是子类的。

    例子:

    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{} 
    
    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)); 
            System.out.println("10- "+a2.show(a1)); 
            System.out.println("11- "+a1.show(c)); 
            System.out.println("12- "+a1.show(d)); 
        }
    View Code

    答案:

    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
    10- B and A
    11- A and A
    12- A and D

  • 相关阅读:
    190822——喜欢
    190821——彼岸无岸
    190820——随笔
    BLE——协议层次结构
    190817——肖申克的救赎
    190818——人
    190819——皖北部分村落的变迁史
    【转】vfork 和 fork的区别
    C语言文件操作
    【makefile】symbol <函数> : can't resolve symbol 问题分析
  • 原文地址:https://www.cnblogs.com/chrono/p/4031778.html
Copyright © 2011-2022 走看看