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

    2021-01-17 12:23:54
    多态(Polymorphism)按字面的意思就是“多bai种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等...
    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关键字,那么子类的同名函数将会被覆盖。
    展开全文
  • 在学习多态的过程中,发现书籍和网上大部分文章都是在讲多态的概念,但什么时候用呢,又为什么用呢,就不得而知了。我找了很多资料,结合自己的理解,特总结出这篇文章,和大家分享。 1.什么多态 编程中多态就是指...

    在学习多态的过程中,发现书籍和网上大部分文章都是在讲多态的概念,但什么时候用呢,又为什么用呢,就不得而知了。我找了很多资料,结合自己的理解,特总结出这篇文章,和大家分享。

    1.什么是多态

    编程中多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

    比如你是一个酒神,对酒情有独钟。某日回家发现桌上有几个杯子里面都装了白酒,从外面看我们是不可能知道这是些什么酒,只有喝了之后才能够猜出来是何种酒。你一喝,这是剑南春、再喝这是五粮液、再喝这是酒鬼酒….在这里我们可以描述成如下:

    酒 a = 剑南春
    酒 b = 五粮液
    酒 c = 酒鬼酒

    这里所表现的的就是多态。剑南春、五粮液、酒鬼酒都是酒的子类,我们只是通过酒这一个父类就能够引用不同的子类,这就是多态——我们只有在运行的时候才会知道引用变量所指向的具体实例对象。

    诚然,要理解多态我们就必须要明白什么是“向上转型”。这里再讲解一下:在上面的喝酒例子中,酒(Win)是父类,剑南春(JNC)、五粮液(WLY)、酒鬼酒(JGJÿ

    展开全文
  • 但是这个多态什么作用呢?而我们又为什么要是有多态呢?首先讲下封装和继承:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面,他把实现的细节影藏起来了,比如你在java中去实现...

    用最简单的一句话就是:父类型的引用指向子类型的对象。用一句比较通俗的话:同一操作作用于不同的对象,可以产生不同的效果。这就是多态。

    这句话很好理解:Person person = new Student("张三");但是这个多态有什么作用呢?而我们又为什么要是有多态呢?

    首先讲下封装和继承:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面,他把实现的细节影藏起来了,比如你在java中去实现一个类,这个类中提供了一些功能方法,你只需要知道你需要传递什么样的参数,会达到什么样的效果,实现细节在类中定义好了。从而使得代码模块化;而继承可以扩展已存在的代码模块,而目的就是为了代码重用。

    那么多态除了代码的复用,还可以解耦。然而为什么要解耦?耦合度讲的是模块模块之间,代码代码之间的关联度,通过对系统的分析把他分解成一个一个子模块,子模块提供稳定的接口,达到降低系统耦合度的的目的,模块模块之间尽量使用模块接口访问,而不是随意引用其他模块的成员变量。

    多态有什么好处?

    有两个好处:

    1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承

    2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用,

    多态在什么地方用?

    可以用在方法的参数中和方法的返回类型中。

    在方法中的参数,请看下面的例子:

    public abstract class Driver

    {

    public void run();//让子类来运行

    }

    class SBenz : Driver

    {

    public void run()

    {

    Console.WriteLine("Benz在以200迈的速度在run");

    }

    }

    class JD : Driver

    {

    public void run()

    {

    Console.WriteLine("JD is running...");

    }

    }

    class Person

    {

    private Driver driver;

    public Person()

    {

    }

    public Person(Driver driver)

    {

    this.driver = driver;

    }

    public void drive()

    {

    driver.run();

    }

    public void setDriver(Driver driver)

    {//运用参数多态,以后不管买什么车都可以

    this.driver = driver;

    }

    }

    static void Main(string[] args)

    {

    Person p = new Person();

    JD jd = new JD();//刚开始没钱就买辆JD吧

    p.setDriver(jd);

    p.drive();

    SBenz benz = new SBenz();//有钱换车了

    p.setDriver(benz);

    p.drive();

    }

    在方法的返回类型中,请看下面的例子:

    上面的例子中,不管是JD还是Benz都是我们自己直接new出来的.我们可以设计一个工厂类,专门生成汽车

    /**

    *   我们将多态使用在方法的返回类型中

    *   Driver可以是抽象类,也可以是接口,JD和Benz分别继承该类或实现该借口

    */

    public class CarFactory

    {

    public Driver factory(String carName)

    {

    if (carName.Equals("JD"))

    {

    return new JD();

    }

    else if (carName.Equals("Benz"))

    {

    return new SBenz();

    }

    else

    {

    Console.WriteLine("对比起,不伺候");

    return null;

    }

    }

    }

    类型的参数.,传入参数的时候,可以传入任何一个类的对象,只要是对应的类的对象名称就可以了

    这就是多态的应用!

    展开全文
  • 今天就来为大家介绍一下,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工具网。

    推荐阅读:

    展开全文
  • 展开全部什么多态1.面向对象的三大特性:封装、继承32313133353236313431303231363533e78988e69d8331333365653137、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的...
  • 什么多态多态什么好处?

    千次阅读 2020-07-11 10:56:22
    什么多态? 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。 为什么多态? "封装"通过合并特征和行为来创建新的数据类型。“实现...
  • Python中的多态什么

    2021-02-03 13:00:33
    多态的概念其实不难理解,它是指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。事实上,我们经常用到多态的性质,比如:>>>1 23>>>'a' 'b''ab'可以看到,...
  • 什么多态

    千次阅读 2019-08-20 20:45:31
    什么多态 多态的特点 多态存在的三个必要条件 多态时成员变量、静态方法和非静态方法的特点 什么多态 多态就是一个对象变量可以指向多种实际类型的现象,同一个事件发生在不同的对象上会产生不同的结果。 ...
  • 学习java刚刚入门的小伙伴们,不知道大家在初次接触java中的多态一概念的时候,是否能清晰的讲出实现多态的机制是什么吗?什么才是java中的多态呢?多态性是指的面向对象程序设计代码重用的一个重要的机制,对于Java多...
  • java中的多态是指什么

    2021-03-09 06:47:05
    java中的多态是指什么发布时间:2020-06-28 09:59:19来源:亿速云阅读:119作者:Leahjava中的多态是指什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更...
  • 什么多态? 概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。 为什么要用多态呢? 原因:我们知道,封装可以隐藏实现细节...
  • 什么是编译时 只是单纯的将代码翻译成一种中间语言(例如...什么是Java编译时多态 通过编译即可明确是哪一个多态方法的调用 比如说Java的重载,只通过参数的数量和类型不同来实现多态,那么在编译时我们可以单纯根据
  •   在学习《大话设计模式》的时候经常会遇到多态,但什么多态?为什么要使用多态什么时候用多塔?多态是如何实现的?使用多态什么好处?我们将根据以上五个问题展开激烈的讨论。 什么多态?   多态,...
  • 不是多态的程序,但有继承和重写:classPerson{publicvoidSayHello(){System.out.println("父类");}}classStudentextendsPerson{publicvoidSayHello(){System.out.println("学生类");...不是多态的程序,但有继承和...
  • 多态的体现是父类引用变量可以指向子类对象,在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法;多态的前提条件是有子父类关系或者类实现接口的关系。
  • java多态机制是什么

    2021-02-12 11:01:30
    java多态机制是什么java中实现多态的机制是依靠父类或接口的引用指向子类。从而实现了一个对象多种形态的特性。其中父类的引用是在程序运行时动态的指向具体的实例,调用该引用的方法时,不是根据引用变量的类型中...
  •  什么是运行期多态  什么是编译期多态  它们的优缺点在哪  运行期多态  运行期多态的设计思想要归结到类继承体系的设计上去。对于有相关功能的对象集合,我们总希望能够抽象出它们共有的功能集
  • Java中的多态什么多态? 多态性是面向对象编程的三大重要特征之一,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中...
  • 什么多态?为什么多态?有什么好处?

    万次阅读 多人点赞 2018-07-13 16:48:56
    多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是我们在以后的工作中经常回用到的首先,有这样一个系统:有个学生工作从达内毕业了,作的还不错.买了辆捷达汽车.这个系统应该如何设计呢?按照OO...
  • 什么多态 概念 一个类实例的相同方法在不同情形下有不同的表现形式。 多态机制使得具有不同内部结构的对象可以共享相同的外部接口。(利用多态可以得到良好的设计) 理解 谈到面向对象的编程语言时不...
  • Java面向对象程序设计 多态 主讲人何鑫 软件技术专业教学资源库 什么多态 第二部分 什么多态 多态是具有表现多种形态的能力特征即同一个实现接口引用类型使用不同的实例而执行不同操作 也可理解为相同的消息给予...
  • 什么多态

    2020-10-23 23:31:27
    接口的多种不同的实现方式即为多态。 多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术。 我们在程序中定义的引用变量所指向的具体类型和通过该引用变量的方法调用在编程的时候并不确定,当处于运行...
  • 接口的多种不同的实现方式即为多态。 2.多态性是允许你将父类对象设置成为一个或更多的他的子对象相等的技术。 3.我们在程序中定义的引用变量所指向的具体类型和通过改引用变量的方法调用在编程的时候并不确定,...
  • 什么条件下使用多态

    2021-02-03 13:06:03
    将一个类作为非多态类型: 一个函数的执行方式十分确定,不需要任何特殊处理,不希望在派生类提供特殊的实现,就应将它声明为非虚函数 该类中的所有函数都具备以上特点 将一个类设计为非多态类型,意味着不希望...
  • 本篇博客让我们从一个完全不懂得状态一步步了解什么多态,深入掌握多态的概念。 什么多态? 让我们看看百度是怎么定义多态的,话不多说,上图! 望文生义,第一眼看到多态,感觉就是多种...
  • 该实例我是一篇文章的源代码,解释了什么是封装继承和多态,地址https://blog.csdn.net/wangjianbo09/article/details/82222807
  • JAVA 什么多态?

    千次阅读 多人点赞 2019-05-16 17:53:28
    面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下...那么,什么多态呢? 1.定义: 多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象...
  • java 多态什么

    2020-12-22 17:10:27
    多态是同一个行为具有多个不同表现形式或形态的能力。 多态的优点 消除类型之间的耦合关系:在使用重载方式,来对同方法名不同参数类型,来达到不同结果,进而消除了一定耦合关系 可替换性:在使用重写方式,完全...
  • 文章目录一、什么多态?主要体现在哪里?二、简单举例演示 本文介绍面向对象的多态。 一、什么多态?主要体现在哪里? 多态:就是类的方法或者对象具有多种状态,是OOP的第三大有太特征,是建立在封装和...

空空如也

空空如也

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

多态什么什么