Java中多态是什么意思

  介绍

这篇文章主要介绍了Java中多态是什么意思,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

多态

<强>在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。

多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序。多态的作用就是消除类型之间的<代码>耦合关系>

1。向上转型

根据<代码>里氏代换原则>

对象既可以作为它自己本身的类型使用,也可以作为它的基类型使用。而这种吧对某个对象的引用视为对其基类型的引用的做法被称作为——<代码>向上转型> 向上转型>

公共类动物{空吃(){
  System.out.println(“动物吃()“);
  }
  }类猴子一直延伸到动物{太空吃(){
  System.out.println (“;猴子吃()“);
  }
  }{公共静态类测试空白开始(动物动物){
  animal.eat ();
  }公共静态void main (String [] args) {
  猴子猴子猴子=new ();
  开始(猴子);
  }
  }/*输出:
  猴子吃()
  */复制代码

上述<代码> 测试类中的<代码> start() 方法接收一个<代码> ,动物的引用,自然也可以接收从<代码>动物> 吃()方法的时候,自然而然的使用到猴子<代码> 中定义的<代码>吃()方法,而不需要做任何的类型转换。因为从<代码> 向猴子上转型到<代码> 只动物能减少接口,而不会比动物<代码> 的接口更少。

打个不是特别恰当的比方:你父亲的财产会继承给你,而你的财产还是你的,总的来说,你的财产不会比你父亲的少。

忘记对象类型

在<代码> test.start() 方法中,定义传入的是<代码>动物> 猴子> 的对象类型,那么为什么不直接把<代码> 测试类中的方法定义为<代码>空白开始(猴子猴子)>

直观也许是它的优点,但是就会带来其他问题:<代码> 动物不止只有一个猴子<代码> 的导出类,这个时候来了个<代码>猪> 空白开始(猴子猴子)>

因此这样就有了<代码>多态>

2。显露优势

<强>方法调用中分为<代码>静态绑定和<代码>动态绑定>

    <李> <代码>静态绑定> 前期绑定强。是在程序执行前进行把绑定。我们平时听到“静态“的时候,不难免想到<代码>静态代码关键字,被静态代码 <代码>关键字修饰后的变量成为静态变量,这种变量就是在程序执行前初始化的。<代码>前期绑定>

<强> 引出思考:

公共静态空虚开始(动物动物){
  animal.eat ();
  }复制代码

start()方法中传入的是Animal 的对象引用,如果有多个Animal的导出类,那么执行eat()方法的时候如何知道调用哪个方法。如果通过前期绑定那么是无法实现的。因此就有了后期绑定

  • 动态绑定:又称为后期绑定。是在程序运行时根据对象类型进行绑定的,因此又可以称为运行时绑定。而 Java 就是根据它自己的后期绑定机制,以便在运行时能够判断对象的类型,从而调用正确的方法。

小结:

Java 中除了 staticfinal 修饰的方法之外,都是属于后期绑定

合理即正确

显然通过动态绑定来实现多态是合理的。这样子我们在开发接口的时候只需要传入 基类 的引用,从而这些代码对所有 基类 的 导出类 都可以正确的运行。

其中MonkeyPig

Java中多态是什么意思