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

    2021-01-17 12:23:54
    引用Charlie Calverts对多态的描述——多态性允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”...
    1. 多态(Polymorphism)按字面的意思就是“多bai种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数(Virtual Function) 实现的。
    2. 多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的对象在运行时才能确定。编译时多态是静态多态,在编译时就可以确定对象使用的形式。
    3. 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
    4. C++中,实现多态有以下方法:虚函数,抽象类,重载,覆盖,模板。
    5. Oc中的多态:不同对象对同一消息的不同响应.子类可以重写父类的方法。
    6. 多态就是允许方法重名 参数或返回值可以是父类型传入或返回。
    7. 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
    8. 赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。
    9. 举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果。
    10. 比如从某个基类继承出多个对象,其基类有一个虚方法Tdoit,然后其子类也有这个方法,但行为不同,然后这些子对象中的任何一个可以赋给其基类对象的引用,或者将子对象地址赋给基类指针,这样其基类的对象就可以执行不同的操作了。实际上你是在通过其基类来访问其子对象的,你要做的就是一个赋值操作。
    11. 使用继承性的结果就是可以创建一个类的家族,在认识这个类的家族时,就是把导出类的对象当作基类的对象,这种认识又叫作upcasting。这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族,因为编译器会自动找出合适的对象来执行操作。这种现象又称为多态性。而实现多态性的手段又叫称动态绑定(dynamic binding)。
    12. 简单的说,建立一个父类的对象,它的内容可以是这个父类的,也可以是它的子类的,当子类拥有和父类同样的函数,当使用这个对象调用这个函数的时候,定义这个对象的类(也就是父类)里的同名函数将被调用,当在父类里的这个函数前加virtual关键字,那么子类的同名函数将被调用。通俗点说就是父类不加virtual关键字,那么子类的同名函数将会被覆盖。
    展开全文
  • 今天就来为大家介绍一下,java多态是什么意思?并且用实例分享出来,一起来了解一下吧。首先,多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能...

    相信很多学习java的人对于java多态是非常了解的,它的知识点也是非常重要的。今天就来为大家介绍一下,java多态是什么意思?并且用实例分享出来,一起来了解一下吧。

    首先,多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。

    另外,多态是出现在具有继承关系的两个类的对象之间,所以它不像方法重载(发生在一个类中)在编译期间发生(也就是确定下来),而是在运行期间发生(确定下来)。

    1.一个父类类型的引用可以指向他任何一个子类的对象

    2.[相同]类域的[不同]对象执行[同一]方法的时候会有[不同]的表现

    有一个比较经典的多态实例:

    有一个Animal类,它有Cat,和Dog两个子类,在Animal中有个say方法,当Cat调用这个方法的时候输出的是“小猫喵喵喵”,当Dog调用这个方法时,输出的是“小狗汪汪汪”,这就是Java多态的实现。

    这里我们写另外一个:

    —父类:Person.java,代码如下所示:import java.util.Scanner;

    public class Person

    {

    public int salary;

    public int allSalary()

    {

    return 0;

    }

    public static void main(String[] args)

    {

    Person p = null;

    for (int n = 0; n 

    {

    @SuppressWarnings("resource")

    Scanner sc = new Scanner(System.in);

    System.out.println("请输入一个1-3的数字:\n1 is Teacher\n2 is Scientis\n3 is Waiter");

    int i = sc.nextInt();

    //分别指向了不同的子类,输出的结果是不一样的

    if (i == 1)

    {

    p = new Teacher(5000);

    System.out.println(p.allSalary());

    }

    else if (i == 2)

    {

    p = new Scientist(5000);

    System.out.println(p.allSalary());

    }

    else if (i == 3)

    {

    p = new Waiter(5000);

    System.out.println(p.allSalary());

    }

    else

    {

    System.out.println("?\n请输入1-3");

    }

    }

    }

    }

    —子类:Scientist .java,代码如下所示:public class Scientist extends Person

    {

    public Scientist(int salary)

    {

    this.salary = salary;

    }

    public int allSalary()

    {

    int aa = salary * 12 + 36500;

    System.out.print("五五开一年的工资:");

    return aa;

    }

    }

    Waiter.java,代码如下所示:public class Waiter extends Person

    {

    public Waiter(int salary)

    {

    this.salary = salary;

    }

    public int allSalary()

    {

    int aa = salary * 12;

    System.out.print("服务员一年的工资:");

    return aa;

    }

    }

    Teacher .java,代码如下所示:public class Teacher extends Person

    {

    public Teacher(int salary)

    {

    this.salary = salary;

    }

    public int allSalary()

    {

    int aa = salary * 12 + 3650;

    System.out.print("教师一年的工资:");

    return aa;

    }

    }

    以上就是关于java多态是什么意思的主要内容了。并且用实际的代码为大家展示出来了。如果你对java知识感兴趣,想要了解更多java实例,敬请关注奇Q工具网。

    推荐阅读:

    展开全文
  • 多态是什么意思

    千次阅读 2018-04-13 10:58:25
    多态是什么意思?5 java中的多态是什么意思? 豹子头09| 浏览 4739 次|举报 我有更好的答案 推荐于2017-11-28 16:32:45最佳答案 比方一下: 你和你朋友都是烟鬼, 某日,你没有带烟, 而你朋友有n种...

    多态是什么意思?5

    java中的多态是什么意思?
    豹子头09| 浏览 4739 次|举报
    我有更好的答案
    推荐于2017-11-28 16:32:45最佳答案
    比方一下:
    
    你和你朋友都是烟鬼,
    
    某日,你没有带烟, 而你朋友有n种烟,
    
    你说: 来根烟,
    
    朋友给你一根;
    
    你通过烟的过滤嘴, 品出为白沙烟
    
    你再要一根,
    
    品出这次是芙蓉王,
    
    再要一根,
    
    品出这次是熊猫
    
    ...
    
    上面描述的就是多态!
    
    烟 a = 白沙
    烟 b = 芙蓉王
    烟 c = 熊猫
    
    但发现没有, 仅仅通过"烟"基类, 引用到不同的具体类对象,
    
    就能让你调用到不同的对象, 这就是多态.
    
    而烟到你嘴里[此时你还没有发现是那种烟], 你仅仅凭借"吸"的动作,就识别出来,到底是哪种烟对象
    
    这就是多态的悬机.
    
    多态须具备:
    
    1. 基类 和各个子类
    
    2. 基类 引用, 指向实例化的子类对象.
    
    再举一个鸡的例子,
    
    鸡是所有其它鸡的基类, 定义了一个方法shape(), 此方法能指明鸡的形态. 所有的子类[火鸡,山鸡,田鸡等],都有这个shape方法, 表明自己的形态,
    
    如果用下面的方法定义我需要具体的鸡,
    
    [基类 引用 = 实现类的对象]
    
    for example:
    
    鸡 a = new 火鸡();
    
    鸡 a = new 田鸡();
    
    鸡 a = new 山鸡();
    
    鸡 a = new 母鸡();
    
    当我使用的时候, 我采用 a 这个引用,
    
    a.shape(), 就会得到鸡的形态.
    
    如果我定义的是
    
    鸡 a = new 火鸡();
    
    那么a.shape得到的是火鸡的形态, 而不需要用具体的
    
    火鸡 a = new 火鸡(); 再通过a.shape得到火鸡的形态
    展开全文
  • 多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。Fuf1=newZi1();Fuf2=newZi2();...

    多态首先是建立在继承的基础上的,先有继承才能有多态。多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。Fu f1 = new Zi1();

    Fu f2 = new Zi2();

    f1.c();

    f2.c();

    子类Zi1,Zi2继承了父类Fu,并且重写了父类的方法c()

    然后通过f1,和f2去调用子类重写父类后的这个方法。即还有一个成立条件是子类必须重写父类的方法。

    面向对象的三个基本特征是:封装、继承、多态。

    比如,你和你朋友同时继承了人这个类中打人的方法,但是你用拳头打人和你朋友用巴掌打人的方法都是打人方法,却表现出不同的形式,这就是现实生活中多态的理解。

    关于多态,有一个被称作“鸭子类型”(duck typeing)的东西,其含义在维基百科中被表述为:

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念的名字来源于由 James Whitcomb Riley 提出的鸭子测试(见下面的“历史”章节),“鸭子测试”可以这样表述:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

    在 python 中多态的经典使用可以用两句话来总结对扩展开放和对修改封闭,即著名的「开闭」原则。对扩展开放即可以随意的增加父类的子类;对修改封闭即对于依赖父类的函数,新增子类对该函数无任何影响无需做任何修改。

    我们可以通过以下代码来加深理解:#!/usr/bin/env python3

    # -*- coding:utf-8 -*-

    class Person:

    def __init__(self, name, age):

    self.name = name

    self.age = age

    def print_age(self):

    print("%s's age is %s" % (self.name, self.age))

    class Man(Person):

    def print_age(self):

    print("Mr. %s's age is %s" %(self.name, self.age))

    class Woman(Person):

    def print_age(self):

    print("Ms. %s's age is %s" %(self.name, self.age))

    def person_age(person):

    person.print_age()

    person = Person("kevin", 23)

    man = Man("Bob", 33)

    woman = Woman("Lily", 28)

    person_age(person)

    person_age(man)

    person_age(woman)

    以上代码执行结果如下:kevin's age is 23

    Mr. Bob's age is 33

    Ms. Lily's age is 28

    在以上代码中函数 person_age 函数的输入参数为类 Person 的实例,但是在实际执行过程中 Person 的子类 Man 和 Woman 的示例同样可以在 person_age 函数中正常运行,这既是类的多态的作用。实际上任何实现了函数 print_age 函数的类均可作为 person_age 函数的参数且能够正常工作,这既是前面提到的「鸭子类型」。

    展开全文
  • 展开全部什么是多态1.面向对象的三大特性:封装、继承32313133353236313431303231363533e78988e69d8331333365653137、多态。从一定角度来看,封装和继承几乎都多态而准备的。这我们最后一个概念,也最重要的...
  • python中的多态是什么 Python中的多态 (Polymorphism in Python) Polymorphism is a concept of Object Oriented Programming, which means multiple forms or more than one form. Polymorphism enables using a ...
  • 多态的概念其实不难理解,它指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。事实上,我们经常用到多态的性质,比如:>>>1+23>>>'a'+'b''ab'可以看到,...
  • 运行时类型,由实际赋值给变量的对象的类型决定,当一个变量的两个类型不一致,就会出现多态。//BaseClassSubClass的父类BaseClass a = new BaseClass();BaseClass b = new SubClass();//变量a调用baseMethod()...
  • 多态所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态多态的概念应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”。鸭子类型:虽然我想要一只"鸭子",但是你给了我一只鸟。 但是只要这...
  • 在面向对象程序设计中,除了封装和继承特性外,多态一个非常重要的特性,下面详细了解什么是多态。我们都知道,Python 弱类型语言,即在使用变量时,无需为其指定具体的数据类型,这就可能出现,同一个变量会...
  • 在面向对象程序设计中,除了封装和继承特性外,多态一个非常重要的特性,下面详细了解什么是多态。我们都知道,Python 弱类型语言,即在使用变量时,无需为其指定具体的数据类型,这就可能出现,同一个变量会...
  • php课程 12-41 多态是什么 ...2、多态是什么(详细一点)? 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函...
  • 多态的概念其实不难理解,它指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。事实上,我们经常用到多态的性质,比如:>>>1 23>>>'a' 'b''ab'可以看到,...
  • 多态是什么

    2021-03-06 11:21:56
    父子类 重写
  • java 多态是什么

    2020-12-22 17:10:27
    多态是同一个行为具有多个不同表现形式或形态的能力。 多态的优点 消除类型之间的耦合关系:在使用重载方式,来对同方法名不同参数类型,来达到不同结果,进而消除了一定耦合关系 可替换性:在使用重写方式,完全...
  • 我们在实现一种程序运行时,可以选择不同的...一、定义多态是指的是事物的多种状态,同一操作,由于条件的不同,所以产生的结果也不同。例如在程序中同一引用类型,由于实例的不同,产生的结果也会不同。二、说明1...
  • 展开全部多态(Polymorphism)按字面的意思就是“多种...引用Charlie Calverts对多态的描述——多态性允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象...
  • 如果仅这么写程序,还不是多态,记住实现多态的三要素:继承 重写 父类引用指向子类对象那么,你必须在父类里面定义一个方法guitar(); ,然后在子类中重写这个方法之后,如果你调用persion.guitar(...
  • 多态是什么 父类如何调用子类的方法(美团面试)

    千次阅读 多人点赞 2020-07-08 14:03:06
    这道题是来自牛客网的一位小哥在2019的最后一天面试系统开发工程师的补招的一个面试题目, 在Java面试中,多态是一个被问到的频率很高的一个概念。 面试官:什么是多态呢? 猪队友:多种形态,气体,液体,固体~ ...
  • 1、什么是多态多态简单的来说就是一种事物的多种存在形态。在面向对象语言当中,接口的多种不同的实现方式就被叫做多态多态还是很容易理解的吧。延伸阅读2、java中多态的使用场景介绍方法的重写和重载、子类对象...
  • 什么多态呢?按照字面意思理解就是多种形态的意思。还是举昨天的那个例子:动物园里动物都得吃食物,兔子吃胡萝卜,猫吃鱼,狗吃肉。同一行为(吃东西),通过不同的事物(兔,猫,狗),可以体现出不同的形态(兔子吃...
  • Python是一种纯粹的面向对象语言。...多态是同一类事物具有的多种形态。多态是面向对象编程的重要特点之一。Python本身就是一种多态语言:上述程序中,参数a和b可以接收不同的数据类型。当a和b同...
  • c++的多态是什么

    2020-04-01 16:41:33
    1、在C++中接口的多种不同的实现方式就是多态面向对象的核心,分为类的多态性和函数的多态性。 2、虚函数表:存在虚函数的类都存在一个一维的虚函数表叫做虚表,类的对象有一个指向虚表的虚指针,虚表和类...
  • java中多态是什么意思

    2017-02-18 17:10:01
    什么是多态 的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都多态而准备的。这我们最后一个概念,也最重要的知识点。 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以...
  • 运行时多态就是覆盖,就是子类方法覆盖父类方法。使用父类引用指向子类对象,再调用某一父类中的方法时,不同子类会表现出不同结果。
  • 什么接口最能体现多态?因为接口和实现类的关系,以及各个实现类之间的关系,不像父类和子类之间,子类和其他子类之间的要求那么严格...举个例子,拿"吃饭"这个method举例...如果把这个method声明在父类中,那么子类必须...
  • iOS中的多态是什么

    2016-03-01 12:04:30
    多态:简单的定义就是父类指针指向子类对象 多态的使用注意事项:父类能调用子类的方法吗? 1、同名方法一定可以调用 2、不同名方法:1)父类访问子类特有的方法,需要强制类型转换  例如:父类Animal调用...
  • 多态是继数据抽象和继承之后的第三种基本特征。 定义 :多态(Polymorphism)按字面的意思就是“多种状态”。在 面向对象语言 中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,390
精华内容 5,756
关键字:

多态是什么