0

问题中,我了解到多态性有 4 种类型:

  1. 强迫,

  2. 重载

  3. 参数多态性

  4. 包容性

    所以我没有完全理解Inclusion是什么意思,我需要同样的例子来实现这个概念。

4

2 回答 2

0

包含多态性意味着您可以从他的超类中实例化一个对象。例如你有

public class Person {
.
.
}

public class Employee extends Person{
.
.
}

所以你可以创建一个对象

Person x = new Employee();

例如,如果您需要创建许多引用单个 superType 的不同对象,这很有用

例如,您有 SuperTyper 几何图形和 SubTyper 图形(圆形、方形、三角形、..)。geometry_figure 可能有两个属性 x,y 用于屏幕位置和一个抽象方法“draw”,用于在屏幕上绘制,每个扩展它的图形都需要实现

感谢dynamic linkjava,当你调用geometryFigure.draw()时,它会自动知道你正在调用什么类型的几何图形(圆形、方形、三角形,..),并调用这个绘制方法

要手动检查他的具体课程是什么,您可以执行以下操作:

Geometric Figure x = new Square();
if(x instance of Square){...}

一个流行的情况是当你想引用这样的通用对象时

Object x = new AnyClass();

因为 Object 是每个类都有的通用超类。(当你不扩展任何东西时,默认情况下它扩展对象)

于 2018-05-23T15:51:34.103 回答
0

正如已经建议的那样,自己搜索一下以更深入地了解这个主题......这是一种可能的解释:

[...] 子类型化允许编写函数以获取特定类型 T 的对象,但如果传递属于类型 S 的对象,该对象是 T 的子类型(根据 Liskov 替换原则)维基百科 - 多态性

abstract class Vehicle
{
    abstract void move();
}

class Car extends Vehicle
{
    public void move() { ... }
}

class Ship extends Vehicle
{
    public void move() { ... }
}

public void moveVehicle(Vehicle v)
{
    v.move();
}

以下是包含多态性的示例:

Vehicle [] vs = new Vehicle [2];

vs[0] = new Car();
vs[1] = new Ship();

for(Vehicle v : vs)
{
    moveVehicle(v);
}

或者另一个例子:

Car c = new Car();
Ship s = new Ship();

moveVehicle(c);
moveVehicle(s);

有关更多信息,请参阅Wikipedia - Polymorphism页面...但仍要自行搜索该主题以更深入地了解它!

于 2018-05-23T15:42:33.903 回答