精华内容
下载资源
问答
  • java 多态什么

    2020-12-22 17:10:27
    多态是同一个行为具有多个不同表现形式或形态的能力。 多态的优点 消除类型之间的耦合关系:在使用重载方式,来对同方法名不同参数类型,来达到不同结果,进而消除了一定耦合关系 可替换性:在使用重写方式,完全...

    多态,java 三大特性之一
    多态是同一个行为具有多个不同表现形式或形态的能力。

    多态的优点

    1. 消除类型之间的耦合关系:在使用重载方式,来对同方法名不同参数类型,来达到不同结果,进而消除了一定耦合关系
    2. 可替换性:在使用重写方式,完全可以替换覆盖父类同方法名方法逻辑
    3. 可扩充性:使用重写或重载,可以达到扩充新需求的目的
    4. 接口性:主要是接口类继承实现方式,相当于一个接口,多个方法;
    5. 灵活性:灵活就是在于继承方式的重写和方法重载编写方式;还有就是接口的使用
    6. 简化性:重写和重载编写方式,前者,可以复用父类方法,简化子类的方法编写;后者就是一个方法名,装在不同的参数,进而不同的执行结果,不用编写多个方法名,也可以实现你想要的目的。

    多态存在的三个必要条件

    1、继承:在多态中必须存在有继承关系的子类和父类。
    2、重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
    3、向上(或下)转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法。

    只有满足了上述三个条件,我们才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为。

    多态的实现方式

    1、重写或重载:

    重写:就是复用父类的同名方法,可以覆盖父类方法,也可以使用super 关键字启用父类方法
    重载:就是在复用父类的同名方法,但是原有方法无法达到需求,就对同名方法进行传参,来满足自己的需求,同时也可以使用super 关键字启用父类方法

    2、接口

    生活中的接口最具代表性的就是插座,有双口、有三口的

    3、抽象类和抽象方法

    实现的效果与接口差不多一样,都是不能实例化,只是一个工具类。主要的作用就是一次写好,下次继承立马就能全部导入,不用伤手指。

    展开全文
  • 什么是多态

    2021-07-10 07:14:36
    多态确切的含义是:同一类的对象收到相同消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,就是多种状态,也就是多种结果。 多态性是一种通过多种状态或阶段描述相同对象的编程方式。它的真正...

    多态确切的含义是:同一类的对象收到相同消息时,会得到不同的结果。而这个消息是不可预测的。多态,顾名思义,就是多种状态,也就是多种结果。

    多态性是一种通过多种状态或阶段描述相同对象的编程方式。它的真正意义在于:实际开发中,只要关心一个接口或基类的编程,而不必关心一个对象所属于的具体类。

    区别是否是多态的关键字在于看对象是否属于同一类型。如果把它们看做同一种类型,调用相同的函数,返回了不同的结果,那么它就是多态,否则,不能称为多态。

    • 多态指同一类对象在运行时的具体化。
    • PHP语言是弱类型的,实现多台更简单、更灵活。
    • 类型转换不是多态。
    • PHP中父类和子类看做‘继父’和‘继子’关系,它们存在继承关系,但不存在血缘关系。因此子类无法向上转型为父类,从而失去多态最典型的特征。
    • 多态的本质就是 if …else,只不过实现的层级不同
    展开全文
  • 最近在读《Rust编程之道》,里面提到多态时讲到了三种多态形式: 参数化多态(Parametric polymorphism)、Ad-hoc多态(Ad-hoc polymorphism) 和子类型多态(Subtype polymorphism)。这里介绍一下其中的Ad-hoc多态什么...

    f76799ec6adfae277cd0851d860b5486.png

    最近在读《Rust编程之道》,里面提到多态时讲到了三种多态形式: 参数化多态(Parametric polymorphism)、Ad-hoc多态(Ad-hoc polymorphism) 和子类型多态(Subtype polymorphism)。这里介绍一下其中的Ad-hoc多态是什么?

    Ad-hoc的字面意思

    Ad-hoc在wiki上的中文翻译是特设多态,不过似乎很少又中文书籍会这样翻译,目前见到的书籍里几乎都保留了原文,所以Ad-hoc其实一直比较令人迷惑,不理解含义(难道是因为我六级没过)。后来看到了wiki上的解释如下:

    Ad hoc是一个拉丁文常用短语。这个短语的意思是“特设的、特定目的的(地)、即席的、临时的、将就的、专案的”。这个短语通常用来形容一些特殊的、不能用于其它方面的,为一个特定的问题、任务而专门设定的解决方案。

    Ad-hoc polymorphism源自于哪里?

    Ad-hoc polymorphism 一词来源于一篇名为《Fundamental Concepts in Programming Languages》的论文,该文于1967年8月由Christopher Strachey在哥本哈根的计算机程序设计暑期学校发表,其中还首次提出了参数多态,左值和右值等概念。

    Ad-hoc polymorphism是什么意思?

    根据Types and Programming Languages的提到的

    Parametric polymorphism (...), allows a single piece of code to be typed “generically,” using variables in place of actual types, and then instantiated with particular types as needed. Parametric definitions are uniform: all of their instances behave the same. (...)
    Ad-hoc polymorphism, by contrast, allows a polymorphic value to exhibit different behaviors when “viewed” at different types. The most common example of ad-hoc polymorphism is overloading, which associates a single function symbol with many implementations; the compiler (or the runtime system, depending on whether overloading resolution is static or dynamic) chooses an appropriate implementation for each application of the function, based on the types of the arguments.

    参数化多态(Parametric polymorphism)是指一段代码适用于不同的类型,把类型作为参数,在实际需要的时候根据类型进行实例化,所有的实例有相同的行为。有过C++模板编程经验的同学的同学应该很熟悉这种场景,比如下面的代码:

    template <typename T> T Add(T a, T b)
    {
        return a + b;
    }
    

    而 Ad-hoc polymorphoism则与之相对,是指不同的类型表现出不同的行为,同样,C++里的函数重载就是一个很典型的例子,比如operator+操作,针对字符串的重载可以是拼接,而针对整数的重载是求和。函数重载是编译器的多态,也被称作静态作态,而我们面向对象中经常提到的多态则是运行时多态,同样的,这种运行时多态也属于Ad-hoc polymorphoism。

    感谢@jihao1234567补充,Rust里没有函数重载,操作符的重载是由trait来实现的。

    写的不对或者不好的地方欢迎批评指正!

    引用

    https://zh.wikipedia.org/wiki/%E7%89%B9%E8%AE%BE%E5%A4%9A%E6%80%81​zh.wikipedia.org https://zh.wikipedia.org/wiki/Ad_hoc​zh.wikipedia.org
    展开全文
  • 潇湘沐封装、继承、多态比较抽象,只是一种概念,刚开始学的时候无需太过于深究,如果要你一上来学JAVA就理解这些东西,有点牵强,你所要做的就是至少看到代码知道这个用到的是什么。封装的概念好比一辆汽车,你学...

    a3351bdb5a53b3f8da822460b89bed72.png

    潇湘沐

    封装、继承、多态比较抽象,只是一种概念,刚开始学的时候无需太过于深究,如果要你一上来学JAVA就理解这些东西,有点牵强,你所要做的就是至少看到代码知道这个用到的是什么。封装的概念好比一辆汽车,你学开车的时候只需学会诸如踩油门、刹车,转方向盘即可,无需去了解它的发动机是如何发动。继承,先说说我对类的理解,类起到的作用有:分类(你所用某个类创建的对象实际上该类的个案)和模板的作用,那么继承则起到了对类再次分类的作用,比如,有个类“动物”,“哺乳动物”继承“动物”,再往下“马”又继承了“哺乳动物”这个类。在这里,我们从下往上讲,首先,我们把某种东西划分出来,叫做“马”(当然还有“牛”,“鱼”等等),接着,我们发现,“马”,“羊”等还有很多共同的特点,于是,我们再次划分出了“哺乳动物”这个类,再次分类,我们则有了“动物”。但在实际开发中,我们一般是从上往下定义的,即先有了“动物”,再有“哺乳动物”,最后有“马”。多态,正如上面朋友所说一重写,二重载。用汉字来打个比方,比如“开”这个字,在不同的时候各有的意思,比如“开门”,“开窗”,甚至有“开车”,“开饭”等,具有相同名称但操作不同。具体的实现我就不累述了。说说接口吧,在JAVA不支持多继承的,实际上接口起到了类似多继承的作用,一个类只能继承另一个类(或抽象类)但可以实现多个接口。打个比方,“张三”,他是一个“人”,因此他继承了“人”;与此同时,他是一个“司机”,他的平时行为还有“开车”,很显然,这并不能从“人”这个类里继承下来。怎么办?JAVA里只支持单继承,这个时候,接口就起到了作用,它定义了“司机”这个接口,“张三”实现了它,因此,他会开车了。类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;实例变量是类实例化后,系统为其创建的一个类的实例变量的拷贝,即一个实例拥有一个实例变量。类变量则是用static声明,系统为每个类变量分配一次存储空间。即所有的实例共享一个类变量。

    展开全文
  • 接口的多种不同的实现方式即为多态。2.多态性是允许你将父类对象设置成为一个或更多的他的子对象相等的技术。3.我们在程序中定义的引用变量所指向的具体类型和通过改引用变量的方法调用在编程的时候并不确定,相当于...
  • 1. 什么是多态? 面向对象的三大基本特征,封装、继承、多态多态(polymorphism)指为不同数据类型的实体提供统一的接口,这样做的好处就是我们可以在不修改原有程序的前提下删除或者增加一个新的派生类。有人把...
  • java多态之简述

    2021-03-18 10:17:31
    多态一、什么是多态多态根据其字面意思就是多种形态的意思,那么在Java中的多态指的是什么呢?指的是对象具有多种形态的意思,只是Java中分为引用多态和方法多态A.引用多态a.父类的引用指向本类的对象b.父类的引用...
  • 多态及文件

    2021-04-30 11:28:33
    多态 多态满足的条件: ...无法实例对象 子类必须重写抽象类中的纯虚函数,否则也属于抽象类 在多态的应用中,如果子类中没有堆区数据,可以不写虚析构或纯虚析构,如果存在堆区数据,可以通过虚析构或纯虚析构来
  • java中继承和多态

    2021-02-12 09:56:47
    1、 什么是继承,继承的特点?子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的...
  • Java基础之多态和泛型浅析一、前言:楼主看了许多资料后,算是对多态和泛型有了一些浅显的理解,这里做一简单总结二、什么是多态多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口(这里...
  • java多态

    2021-03-02 16:39:31
    多态 Java中实现多态的三个步骤: 1. 要有继承(或者实现)关系. 2.... 3.... [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W9ph7lUf-1614674341651)(C:\Users\wukang\AppData\Roaming\...为什么
  • Java 继承与多态的深入理解发布于 2020-4-6|复制链接摘记: Java 继承与多态的深入理解1、 什么是继承,继承的特点?子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类...
  • c++中的继承和多态

    2021-03-16 15:01:22
    面向对象程序设计的核心思想是数据抽象,继承和动态绑定(封装,继承,多态)。通过数据抽象可以将类的接口和实现分离;通过继承可以定义相似的类型;通过动态绑定可以在一定程度上忽略相似类型的区别,而以统一的...
  • 面向对象编程有三大特性:封装、继承、多态。封装隐藏了类的内部实现机制,可以在不影响使用...那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:所谓多态就是指程序中定义的引用变量所指向的具体类...
  • 这就是为什么编译器在“未曾明确表示转型”活“未曾指定特殊标记”的情况下,仍然允许向上转型的原因。 2.5 谨慎继承 在这里我们需要明确,继承存在如下缺陷: 1、父类变,子类就必须变。 2、继承破坏了封装,对于...
  • 理解Java多态

    2021-03-09 04:28:20
    什么是多态多态建议我们编码时使用common interface(公共接口)而不是concrete implementation(具体实现)。如果我们依赖具体实现来编码,则当我们需要增加common interface的新的实现时,我们需要复制...
  • C# 面向对象之多态

    2021-01-18 12:52:32
    什么是多态? 面向对象开发的三大特征:封装、继承和多态。 在继承的前提下,实例出不同的对象,这些对象调用相同的方法,但是却表现出不同的行为,这就叫多态。 C# 中体现多态有三种方式:虚方法;抽象类;...
  • C++ 多态 超详细讲解

    千次阅读 多人点赞 2021-05-16 11:46:58
    文章目录多态概念引入1、C++中多态的实现1.1 多态的构成条件1.2 虚函数1.3虚函数的重写1.4 C++11 override && final1.5 重载,覆盖(重写),重定义...多态字面意思就是多种形态。 我们先来想一想在日常生活中
  • 继承和多态

    2021-03-26 21:38:17
    公有继承(public)(意味着“是一个”的意思) 1、基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。 2、派生类中的成员函数可以直接访问基类中的public和protected...
  • Java中的封装,继承和多态(详解)

    千次阅读 多人点赞 2021-05-21 22:07:08
    告诉我们说是private访问控制,那么这是什么意思呢?我们来看看另外一张图,那么这张图代表这什么呢?在看这张图之前,我们先来看看四者都提到的包,那么包又是什么呢,包可以简单理解为一个文件夹,把类放到放到包...
  • Java 多态

    2021-03-31 17:04:53
    多态的字面意思是一个引用拥有多种形态,即多态以继承为基础,根据引用的具体指向不同,使用该引用的操作也会有所不同. 多态更是一种程序涉及的思想,不仅在 Java 中, 别的编程语言中也有多态这个概念. 具体的语法体现...
  • Java 笔记 如何理解多态“编译看左边,运行看右边Likefr•2019 年 09 月 22 日Loading...```Java```中的继承是面向对象程序设计的一大特征,子类继承了父类的所有方法和成员变量,如果不对方法进行重写或对成员变量...
  • java中的继承和多态

    2021-02-28 16:44:33
    1、什么是继承,继承的特点?子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的...
  • JAVA:多态

    2021-03-05 20:13:25
    数据抽象、继承和多态是面向对象程序设计语言的三大特性。多态,我觉得它的作用就是用来将接口和实现分离开,改善代码的组织结构,增强代码的可读性。在某些很简单的情况下,或许我们不使用多态也能开发出满足我们...
  • PHP中多态如何实现

    2021-03-23 22:30:35
    PHP中多态如何实现PHP是一种HTML内嵌式的,用来制作动态网页的服务器端的脚本语言。以下是百分网小编整理的PHP中多态如何实现的内容,欢迎学习!...其特点是:开发周期短,稳定安全,简单易学,免费...2 多态的概念封装...
  • Java多态的理解

    2021-02-27 09:20:02
    那么什么是多态呢?方法的重写、重载与动态连接构成多态性。Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大的功能,但是复杂的继承关系也给C...
  • 多态

    2021-03-18 09:29:39
    多态 本节目标 多态的概念 多态的定义及实现 抽象类 C++11中的 override 和 final 多态的原理 单继承和多继承关系中的虚函数表 多态的常见面试题 需要声明的,下列的代码以及代码中的解释都是在vs...
  • 之前介绍了C++面向对象的一大特性 —— 继承, 今天我们就来看看另外的一大特性 —— 多态. 话不多说, 直接进入正题. 文章目录多态的概念多态的定义及实现1.实现多态的条件2. 虚函数及虚函数的重写3. 代码示例4. 虚...
  • 面向对象特征 封装 & 继承 & 多态

    多人点赞 热门讨论 2021-10-27 20:13:51
    面向对象主要是把事物给对象,这个对象含有其属性和行为。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,把面向过程抽象成类,然后封装,方便使用就是面向对象。 简单举个例子:把大象...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,374
精华内容 16,549
关键字:

多态化是什么意思