• 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

  • 相关阅读:
    springcloud 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    java 整合redis缓存 SSM 后台框架 rest接口 shiro druid maven bootstrap html5
    继承
    封装
    对象的生命周期
    类与对象
    如何理解类?
    面向过程
    jdk1.8新特性
    git使用指南
  • 原文地址:https://www.cnblogs.com/chrono/p/4031778.html
Copyright © 2020-2023  润新知