资讯专栏INFORMATION COLUMN

Java多态

Charles / 615人阅读

摘要:调用的是的方法,因为向上转型为,那么只能调用类的方法,里参数有和两种,所以对应于对应于对应于,由于多态性,最终调用的是即由于是的子类,那么可以继承的所有非方法,当然的也在内,所以,就直接调用的是即

1.基于继承
覆盖

子类覆盖父类的方法,实现多态

抽象

子类实现父类的抽象方法,实现多态

2.基于接口

3.案例

摘自http://www.cnblogs.com/chenss...

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

我来理解下4、5和9:

a2.show(b)

A a2 = new B();a2.show(b);
调用的是a2的方法,因为a2向上转型为A,那么show只能调用类A的方法,A里有参数为A和D两种,所以a2.show(b)对应于A.show(B)对应于A.show(A),由于多态性,最终调用的是B.show(A)即B and A。

a2.show(c)

A a2 = new B();a2.show(c);
调用的是a2的方法,因为a2向上转型为A,那么show只能调用类A的方法,A里参数有A和D两种,所以a2.show(b)对应于A.show(C)对应于A.show(B)对应于A.show(A),由于多态性,最终调用的是B.show(A)即B and A.

b.show(d)

B b = new B();D d = new D();b.show(d);
由于B是A的子类,那么B可以继承A的所有非private方法,当然A的show(D)也在内,所以,就直接调用的是A.show(D)即A and D.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70437.html

相关文章

  • 9. java 多态

    摘要:概念所谓多态,就是指一个引用变量类型在不同的情况下的多种状态。需进行强制转换有风险,最好使用进行判断。继承在多态中必须存在有继承关系的子类和父类。在中有两种形式可以实现多态继承和接口。 概念 所谓多态,就是指一个引用变量(类型)在不同的情况下的多种状态。也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。多态性是对象多种表现形式的体现 多态性严格来说有两种描述形式:...

    wanglu1209 评论0 收藏0
  • javascript设计模式与开发实践(一)- 多态

    摘要:当我们对一些函数发出调用的消息时,这些函数会返回不同的执行结果,这是多态性的一种体现,也是很多设计模式在中可以用高阶函数来代替实现的原因。 PS:上一篇文章发表之后,很多朋友关注了本人的思否和掘金的博客,虽然关注的朋友还有有限,但足够让我把自己在技术上的问题积累分享给大家,也希望大家能够喜欢,同时能动一动手指,给一颗心(赞),博主会持续更新下去 多态 本文是《javascript设计模...

    wthee 评论0 收藏0
  • java入门第二季--多态--java中的多态

    摘要:中的多态引用的多态父类的引用是可以指向子类对象报错方法多态动物具有吃的能力狗具有吃肉的能力狗具有看门的能力父类的引用是可以指向子类对象报错 java中的多态 showImg(https://segmentfault.com/img/bVbnDYA?w=1138&h=612); showImg(https://segmentfault.com/img/bVbnD6B?w=344&h=17...

    codercao 评论0 收藏0
  • Java 多态(8)

    摘要:在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。 在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。 1.再论向上转型 多态作用:消除类型之间的耦合关系. 2.转机 绑定:将一个方法调用同一个方法主体关联起来. 前期绑定:在程序执行前就进行绑定(面向过程语言默认绑定方式). 后期绑定:也叫动态绑定或运行时绑定,在运行时根据对象的类型进行绑...

    v1 评论0 收藏0
  • java入门第二季--多态--多态中的引用类型转换

    摘要:多态中的引用类型转换代码自动类型提升,向上类型转换向下类型转换强制类型转型无法进行类型转换 多态中的引用类型转换 showImg(https://segmentfault.com/img/bVbnEal?w=1166&h=597); showImg(https://segmentfault.com/img/bVbnEaq?w=1178&h=606); 代码 /javaDemo4/src...

    gself 评论0 收藏0
  • Java面试题:面向对象,类加载器,JDBC, Spring 基础概念

    摘要:为什么不是面向对象不是面向对象,因为它包含个原始数据类型,例如。自定义类加载器继承的自定义类加载器。可以像下面这样指定参数面试题面向对象,类加载器,基础概念它们的关系如下启动类加载器,实现,没有父类。自定义类加载器,父类加载器为。 1. 为什么说Java是一门平台无关语言? 平台无关实际的含义是一次编写到处运行。Java 能够做到是因为它的字节码(byte code)可以运行在任何操作...

    Euphoria 评论0 收藏0

发表评论

0条评论

Charles

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<