美文网首页
Java的多态

Java的多态

作者: 大红豆小薏米 | 来源:发表于2020-04-26 00:24 被阅读0次
  1. 哪些函数能够调用,取决于reference的类型
  2. 对于被override 的函数,调用哪个版本,取决于object的类型
  3. 如果非要调用reference 没有的类型,可以强制类型转换成object的类型
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";
    }
    // 继承的一个隐形的函数
    //public String show(D obj){
    //    return "A and D";
    //}
}

class C extends B{}
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));
        // "A and A", 因为reference A可以自动匹配b
        
        System.out.println("2-"+a1.show(c));
        // "A and A", 同理
        
        System.out.println("3-"+a1.show(d));
        // "A and D", 就近匹配
        
        System.out.println("4-"+a2.show(b));
        // "B and A", 因为reference是A,匹配的是public String show(A obj), 但是这个在B里被重写,所以是"B and A"
        
        System.out.println("5-"+a2.show(c));
        // "B and A", 同理
        
        System.out.println("6-"+a2.show(d));
        // "A and D"
        
        System.out.println("7-"+b.show(b));
        // "B and B"
        
        System.out.println("8-"+b.show(c));
        // "B and B"
        
        System.out.println("9-"+b.show(d));
        // "A and D", B里面有三个函数的
    }
}

相关文章

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运...

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运行时...

  • 2018-01-25

    多态机制 java语言,实现多态...

  • java多态之简述

    Java的第三大特性------>多态 一、什么是多态 多态根据其字面意思就是多种形态的意思,那么在Java中的多...

  • 学习JavaScript设计模式——面向对象(五)

    面向对象(五) 多态 我仔细看了一下,这里说的JavaScript 的多态好像和Java的多态不一样, Java ...

  • Java基础之面向对象

    1.多态,继承,封装 Java实现多态有哪些必要条件?具体怎么实现?多态的实现原理?多态的作用? 答:多态的优点 ...

  • Java 多态

    1、Java 多态分类 1)编译时多态:方法重载。2)运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决...

  • Java 多态之方法调用顺序

    本文例子取于<深入理解java多态性>和,分析 Ja...

  • 详解Java多态

    详解Java多态 多态定义 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态...

  • Java笔记

    Java基础 Java面试通关要点 1.面向对象的特征 封装 继承 多态 封装继承多态 2.final,final...

网友评论

      本文标题:Java的多态

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