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

    2010-07-26 00:12:00
    多态指的是一种接口,多种实现。更加通俗点就是父类调用子类的方法。 它包含三种形式: 1.接口多态: 多个类实现相同的接口。 2.通过继承实现的多态。 多个类继承了同一个基类。 3.通过抽象类实现的多态 多个...

    多态指的是一种接口,多种实现。更加通俗点就是父类调用子类的方法。

    它包含三种形式:

    1.接口多态:

    多个类实现相同的接口。

    2.通过继承实现的多态。

    多个类继承了同一个基类。

    3.通过抽象类实现的多态

    多个类继承了抽象类,并可以对抽象类中的方法进行重写。

     

    转载于:https://www.cnblogs.com/linjiancun/archive/2010/07/26/1784925.html

    展开全文
  • 什么叫多态呢?按照字面意思理解就是多种形态的意思。还是举昨天的那个例子:动物园里动物都得吃食物,兔子吃胡萝卜,猫吃鱼,狗吃肉。同一行为(吃东西),通过不同的事物(兔,猫,狗),可以体现出不同的形态(兔子吃...

    面向对象三大特性:封装、继承和多态。

    今天学最后一个特性:多态。

    什么叫多态呢?按照字面意思理解就是多种形态的意思。

    还是举昨天的那个例子:

    动物园里动物都得吃食物,兔子吃胡萝卜,猫吃鱼,狗吃肉。

    同一行为(吃东西),通过不同的事物(兔,猫,狗),可以体现出不同的形态(兔子吃胡萝卜,猫吃鱼,狗吃肉),这就叫多态。

    一、多态的格式

    1.格式说明:父类引用指向子类对象。

    189542158_1_20200502063940835_wm

    具体什么意思呢?

    变量有基本数据类型和引用数据类型。

    其中引用数据类型又分为:数组,类和接口。

    父类类型指的是子类继承至的父类,或者子类实现的接口。

    按照现实里面的理解就是:一个是亲爹一个是干爹。

    2.要存在方法重写

    189542158_2_20200502063941179_wm

    其中父类引用(也就是图中的Zoo)在调用方法时,会先看自己有没有这个方法(eat方法)。

    如果没有eat()方法,编译会报错;

    如果有这个方法,会执行子类重写后的方法,

    口诀就是:编译看左边,运行看右边

    就比如上图中:zoo.eat()

    ①编译会先看左边,Zoo接口中有没有eat()方法,有,编译通过。

    ②运行结果看右边,是Rabbit对象,那么会执行Rabbit中重写的eat()方法,也就是“兔子吃胡萝卜”。

    二、多态的好处

    既然是面向对象三大特性,那它有啥好处呢?

    当父类类型作为方法形式参数时,更能体现出多态的扩展性与便利。

    现在要展现动物的eat()方法和sleep()方法。

    如果不使用到多态,常规用法,代码如下:

    189542158_3_20200502063941272_wm

    就是每一个动物都得建立一个对象,并且建立其对象对应的show()方法。

    那么问题来了,动物园里那么多动物,每个动物都建一个show()方法,会显得特别繁琐。

    如果应用到多态的话,就会简单很多。

    代码如下:

    189542158_4_20200502063941772_wm

    每一个动物就建立对象,但是只需要一个show()方法就可以了。

    show()方法参数是父类类型的引用。

    这样无论建立多少个动物对象,只要是子类,都可以将参数传入这个方法,直接使用。

    这就叫代码的可拓展性,以后无论是删减哪种动物,或者是添加哪种动物,这个方法都可以使用,不用改变。

    三、多态的弊端

    多态这么方便,那它有没有什么弊端呢?

    是有的。多态不能调用子类的特有方法,需要使用到强制转换。

    189542158_5_20200502063941850_wm兔类中有一个特有的方法jump(),兔类的父接口Zoo中没有这个方法。

    那么父类引用zoo就不能调用这个特有的方法。

    需要使用到强制转换,也就是(Rabbit)zoo。

    格式为:(类型名)变量名。

    注意:

    189542158_6_20200502063942225_wm

    上面这段代码,编译是没有问题的,但是运行会报错。

    ClassCastException,中文就是:类转换异常。

    其实很好理解,变量zoo定义的时候,本来是子类dog对象,现在强制转换成子类Rabbit,自然没法运行。

    为了避免出现类转换异常,Java提供了一个关键字:instanceof,给变量名做类型的校验。

    189542158_7_20200502063942288_wm

    格式为:变量名 instanceof 类型如果变量属于该类型,返回true;

    如果变量不属于该类型,返回false。

    总结:

    189542158_8_20200502063942663_wm

    展开全文
  • 什么叫多态呢?按照字面意思理解就是多种形态的意思。还是举昨天的那个例子:动物园里动物都得吃食物,兔子吃胡萝卜,猫吃鱼,狗吃肉。同一行为(吃东西),通过不同的事物(兔,猫,狗),可以体现出不同的形态(兔子吃...
    a462844156f2244e515dbde89d45de91.png

    面向对象三大特性:封装、继承和多态。

    今天学最后一个特性:多态。

    什么叫多态呢?按照字面意思理解就是多种形态的意思。

    还是举昨天的那个例子:

    动物园里动物都得吃食物,兔子吃胡萝卜,猫吃鱼,狗吃肉。

    同一行为(吃东西),通过不同的事物(兔,猫,狗),可以体现出不同的形态(兔子吃胡萝卜,猫吃鱼,狗吃肉),这就叫多态

    一、多态的格式

    1.格式说明:父类引用指向子类对象。

    79c1ea0ff476be9c52b6f7bbd04b1c92.png

    具体什么意思呢?

    变量有基本数据类型和引用数据类型。

    其中引用数据类型又分为:数组,类和接口。

    父类类型指的是子类继承至的父类,或者子类实现的接口。

    按照现实里面的理解就是:一个是亲爹一个是干爹。

    2.要存在方法重写

    95c91cacf02ee9f3e6187b6fa66d1ae0.png

    其中父类引用(也就是图中的Zoo)在调用方法时,会先看自己有没有这个方法(eat方法)。

    如果没有eat()方法,编译会报错;

    如果有这个方法,会执行子类重写后的方法,

    口诀就是:编译看左边,运行看右边

    就比如上图中:zoo.eat()

    ①编译会先看左边,Zoo接口中有没有eat()方法,有,编译通过。

    ②运行结果看右边,是Rabbit对象,那么会执行Rabbit中重写的eat()方法,也就是“兔子吃胡萝卜”。

    二、多态的好处

    既然是面向对象三大特性,那它有啥好处呢?

    当父类类型作为方法形式参数时,更能体现出多态的扩展性与便利。

    现在要展现动物的eat()方法和sleep()方法。

    如果不使用到多态,常规用法,代码如下:

    d137df3abd69a9ef520edb0ac0d92829.png

    就是每一个动物都得建立一个对象,并且建立其对象对应的show()方法。

    那么问题来了,动物园里那么多动物,每个动物都建一个show()方法,会显得特别繁琐。

    如果应用到多态的话,就会简单很多。

    代码如下:

    98c0e33ded4a55f803376116d877a374.png

    每一个动物就建立对象,但是只需要一个show()方法就可以了。

    show()方法参数是父类类型的引用。

    这样无论建立多少个动物对象,只要是子类,都可以将参数传入这个方法,直接使用。

    这就叫代码的可拓展性,以后无论是删减哪种动物,或者是添加哪种动物,这个方法都可以使用,不用改变。

    三、多态的弊端

    多态这么方便,那它有没有什么弊端呢?

    是有的。多态不能调用子类的特有方法,需要使用到强制转换。

    4092baff4a1276a8190d4fabe9e3acf3.png

    兔类中有一个特有的方法jump(),兔类的父接口Zoo中没有这个方法。

    那么父类引用zoo就不能调用这个特有的方法。

    需要使用到强制转换,也就是(Rabbit)zoo。

    格式为:(类型名)变量名。

    注意:

    be1aae98eee1f4d8cf527d76b7879b1e.png

    上面这段代码,编译是没有问题的,但是运行会报错。

    ClassCastException,中文就是:类转换异常。

    其实很好理解,变量zoo定义的时候,本来是子类dog对象,现在强制转换成子类Rabbit,自然没法运行。

    为了避免出现类转换异常,Java提供了一个关键字:instanceof,给变量名做类型的校验。

    8bb13262dfa514fc8bc5cb2bfd2e31d2.png

    格式为:变量名 instanceof 类型

    • 如果变量属于该类型,返回true;
    • 如果变量不属于该类型,返回false。

    总结:

    942fb1f9e66bb76ade58dd49ff705842.png
    展开全文
  • 什么叫多态,重载算不算多态

    千次阅读 2018-10-05 21:27:39
    1,同一操作作用于不同的对象,...一种是编译时期多态静态多态,编译时期的多态是靠重载实现的,根据参数个数,类型和顺序决定的(必须在同一个类中) 另一种是运行时的多态,在运行时根据实际情况决定调用函数...

    1,同一操作作用于不同的对象,同一接口可产生不同的结果

    2,有两种多态:

    一种是编译时期多态又叫静态多态,编译时期的多态是靠重载实现的,根据参数个数,类型和顺序决定的(必须在同一个类中)

    另一种是运行时的多态,在运行时根据实际情况决定调用函数

    展开全文
  • Java中什么叫多态

    2019-10-25 16:56:46
    多态的描述 先放个图看一下: 我们可以看到声明mammal变量的类型是Mammal类,但是运行时实际使用的方法却是Pig类的,这里我们可以引出多态的定义: 父类类型(Mammal)的变量(mammal),指向子类创建的对象(new ...
  • 多态是指·同一方法的调用,由于对象不同可能会有不同的行为。现实生活中,同一方法,具体实现都完全不同。 多态分为编译时多态和运行是多态。重载和重写 父类引用指向子类对象 运行时多态: 继承 方法重写 父类...
  • 所以我想把我的想法记录下来供大家参考~今天先聊一个,多态什么呢?我们都知道,java程序是分为编译和运行两部分的,那你有没有想过,java的编译的期间是怎么判断你所写的方法是属于哪里的呢?没错,就是我们常说...
  •   在学习《大话设计模式》的时候经常会遇到多态,但什么多态?为什么要使用多态什么时候用多塔?多态是如何实现的?使用多态什么好处?我们将根据以上五个问题展开激烈的讨论。 什么多态?   多态,...
  • 多态

    万次阅读 2019-07-08 11:24:03
    什么叫多态:一个对象具备多种形态,也可以理解为事物存在的多种体现形态(父类的引用类型变量指向了子类对象,或者是接口的引用类型变量指向了接口实现类的对象) 多态的前提:必须存在继承或者实现关系。 多态要...
  • 多态vs覆盖vs重载表达多态的最清晰的方法是通过抽象基类(或接口)的实现,假如我要全屋子的人去尿尿,但是屋子里面有男的和女的,如何一下屋子里的人去卫生间,然后男的就会去男的卫生间,女的就会...
  • 但是只要这只鸟走路像鸭子,起来像鸭子,游泳也像鸭子,我就认为这是鸭子。 Python的多态,就是弱化类型,重点在于对象参数是否有指定的属性和方法,如果有就认定合适,而不关心对象的类型是否正确。 Python伪...
  • 请不要解释什么叫多态,多态的原理我已经很清楚了。只是暂时还没完全体会到它给我带来的好处,我现在就有个小疑问,比如说下面的程序:classComputer{publicvoidturnOn(){}}classPCex...请不要解释什么叫多态,多态...
  • C++多态

    2019-08-12 14:41:16
    在C++中存在多态,什么叫多态呢?从字面上来看,多种形态简称为多态。当类之间通过继承关联时,就用到了多态。C++多态意味着调用成员函数时会根据调用函数的对象的类型来执行不同的函数。 #include <iostream>...
  • 但是只要这只鸟走路像鸭子,起来像鸭子,游泳也像鸭子,我就认为这是鸭子。Python的多态,就是弱化类型,重点在于对象参数是否有指定的属性和方法,如果有就认定合适,而不关心对象的类型是否正确。·...
  • 一、什么叫多态?例子1:对象多种状态 水:液态 气态 固态例子2:--汽车(父类,基类)----宝马(子类,派生类)----奥迪(子类,派生类)----保时捷(子类,派生类)定义:子类创建对象后,可以指向子类型引用,也可以指向...
  • 知识点丨多态

    2019-03-17 16:50:51
    什么叫多态? 父类的指针指向子类 而调用子类的方法(虚函数、覆写函数) 参照: 1、虚函数、覆写函数 2、策略模式代码
  • 什么多态??

    2017-12-08 20:48:00
    一个方法名,参数不同,这方法重载。(Overload) void foo(String str); void foo(int number); 父类与子类有同样的方法名和参数,这方法覆盖。(Override) class Parent { void foo() { ...
  • 前言什么叫多态?多态就是一种事物可以有多种表现形式多态三要素1.被动方必须有继承关系2.子类一般都要重写父类方法3.必须将主动方的功能函数的参数设置为 被动方父类的类型举个例子司机开车假如说司机会开汽车 我们...
  • 重写式多态,也运行时多态,这种多态通过动态绑定技术来实习,是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。只有程序运行起来,才知道调用的是哪个子类的方法。 多态的条件 继承:...
  • C#的多态

    2021-03-11 16:21:38
    首先解释下什么叫多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。换句话说,实际上就是同一个类型的实例调用"相同"的方法,产生的结果是不同的。这里的"相同"打上双引号是...
  • 快速理解多态特性

    2020-07-27 21:03:49
    什么叫多态? 例如动物,动物可以是狮子,可以是老虎,也可以是猴子,这就是多态。从Java上说,同一操作作用于不同的对象,产生不同的结果就是多态性。 多态的前提条件 1、二者之间要存在继承关系(extants)。 2、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 873
精华内容 349
关键字:

什么叫多态