资讯专栏INFORMATION COLUMN

polymorphism

crossoverJie / 2761人阅读

摘要:总的来说多态解决的问题就是的解耦问题。相反,运行时绑定就是程序在运行前不知道具体使用的方法的类型,只有运行时知道具体使用的方法类型。的整体机制就是使用运行时绑定的。

作为Java的第三大特性--多态,大家肯定很熟悉了,但是对于这个抽象的概念相信总有一些模糊,think in Java 在本章做了很多的解释,具体讲解了一下三个问题。
1.多态解决了什么问题?
2.什么是多态?
3.多态的扩展
多态解决了什么问题?

多态解决了type的解耦问题。多态使我们不用去关注具体的类型是什么,多态的设计就是为了让我们忘记类型这一回事。因为我们不用关注具体的类型,所以很多代码我们都可以复用,我们可以使用一段代码解决类似的问题。这在我们开发过程中有很大的作用,这个解耦使我们每一层的使用牵连减小。总的来说多态解决的问题就是type的解耦问题。在思想上来说,就是让我们忘记类型。

什么是多态?

当我说出这个问题的时候大家可能会下意识的以为我要进行一些很抽象性、很概念性的讲解,实际我想说明的并不是这些概念性的东西,这些直接百度即可。那么回到正题,什么是多态?多态其实也有一些其他的叫法,我更喜欢其中一种,运行时绑定。
在讲解这个词的时候,首先我们来了解一下绑定。绑定分为运行前绑定和运行时绑定。运行前绑定就是在程序没有绑定的时候程序就已经知道要使用的这个方法的具体类型是哪一个了。相反,运行时绑定就是程序在运行前不知道具体使用的方法的类型,只有运行时知道具体使用的方法类型。这样也就实现了不用知道具体的Type的效果。
Java的整体机制就是使用运行时绑定的。除了属性和私有和静态方法。

多态的扩展

我们知道多态只能控制父类的方法,对于子类扩展开来的方法是不能进行操作的,但是我们肯定会遇到这种情况。那么在这个时候我们就不能再使用向上转换了,使用向下转换。但是这里面有一个问题,就是我们不知道这个类型是不是这样你转化的类型,会出现转换出错的问题,这个在c++里面是不安全的,但是Java里面有一个机制,就是在向下转换的时候一定要强制转换进行检查,这样就可以达到安全控制,如果不是会报一个ClassCastException的错误。

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

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

相关文章

  • JavaScript面向对象编程

    摘要:基本概念面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。使用面向对象编程是为了促进更好的灵活性和可维护性。面向对象与面向过程比较,面向过程更注重过程。 1:基本概念 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。 这句话的意思是:每个对象能够接受信息,处理数据和发送消息给其他对象;这就意味着在这个编程模式下,每一个对象都是一个独立的个体,它可以接收,可以处理,...

    Carbs 评论0 收藏0
  • java-工具类Collections和Arrays的设计和区别

    摘要:排序的算法是归并排序。举个例子,的算法可以不是使用归并排序,但是该算法一定要是稳定的。这个类是的一部分。官方这个类只包含操作或返回集合的静态方法。具体来说是,第一步,先把集合转换为数组,第二步,调用。和没有什么区别,只是传参有点不同。 Arrays 1.作用看类的名字,就知道是对数组(数据类型[])进行各种操作。例如,排序、查找、复制等。 排序的算法是归并排序。查找的算法是二分查找。复...

    mj 评论0 收藏0
  • [CS101] Programming Languages and OOP 编程语言及面向对象基础题

    摘要:编程语言及面向对象基础题 编程语言及面向对象基础题 Design Pattern What is singleton? Whats its cons and pros? How to implement it?Definition: Singleton pattern is a design pattern that ensure that only one instance of a...

    Drinkey 评论0 收藏0
  • Java Interview Questions (1)

    What is Java? Java is a high-level platform-independent object oriented programming language. List some features of Java? Object Oriented, Platform Independent, Multi-threaded, Interpreted, Robust, pa...

    xuxueli 评论0 收藏0
  • [译] PureScript: 一门编译到 JavaScript 的 Haskell 方言

    摘要:原文是一门编译到的强类型静态类型语言它的功能受到的激发并且使用编写其目标是编译到同时保持清洁跟可读而且根据作者所说具备跟其他编译到的语言相互操作的能力继承了当中一些突出的功能其中有类型推断允许在任何可能的地方减少类型声明的书写一种类型构 原文: http://www.infoq.com/news/2014/09/purescript-haskell-javascript PureS...

    陈江龙 评论0 收藏0

发表评论

0条评论

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