我需要一个例子来实现通用多态(特别是包含)

时间:2018-05-23 15:10:33

标签: java polymorphism

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

  1. 胁迫,
  2. 重载
  3. 参数多态性
  4. 夹杂物

    所以我并不完全理解包含的含义,我需要相同的例子来实现这个概念。

2 个答案:

答案 0 :(得分:0)

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

  

[...]子类型允许写一个函数来获取某个类型T的对象,但是如果传递属于类型S的对象是T的子类型,那么它也可以正常工作(根据利斯科夫替代原则)Wikipedia - Polymorphism

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页面...但仍然可以自行搜索此主题以深入了解它!

答案 1 :(得分:0)

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

public class Person {
.
.
}

public class Employee extends Person{
.
.
}

所以你可以创建一个对象

Person x = new Employee();

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

例如,你有SuperTyper geometric_figure和SubTyper figure(circle,square,triangule,..)。 geometry_figure可以有两个属性x,y用于屏幕位置,一个抽象方法" draw",用于绘制屏幕,​​每个图形,扩展它,需要实现

感谢dynamic link java调用 geometricFigure.draw()时,它会自动知道你调用的是几何形状的数字(圆形,方形,三角形,...),并使用这种绘制方法

要手动检查您可以执行的具体课程:

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

一个流行的案例是你想要引用像这样的通用对象

Object x = new AnyClass();

因为Object是每个类都具有的通用超类。 (当你不扩展anythig时,默认情况下它会extand对象)