【问题标题】:I need an example to implement the universal polymorphism(especially Inclusion)我需要一个例子来实现通用多态性(尤其是包含)
【发布时间】:2018-05-23 15:10:33
【问题描述】:

question,了解到多态有4种:

  1. 强制,

  2. 重载

  3. 参数多态

  4. 包容

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

【问题讨论】:

  • 尝试去google搜索“java Inclusion Universal polymorphism example”,网上有例子
  • 我需要链接

标签: java polymorphism


【解决方案1】:

如前所述,请自行搜索以更深入地了解该主题...这是一种可能的解释:

[...] 子类型化允许编写函数以获取特定类型 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 页面...但仍要自行搜索该主题以更深入地了解它!

【讨论】:

  • 我经常使用它,但我不知道这正是包含多态性的概念,非常感谢。
【解决方案2】:

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

public class Person {
.
.
}

public class Employee extends Person{
.
.
}

所以你可以创建一个对象

Person x = new Employee();

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

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

感谢java的dynamic link,当你调用geometricFigure.draw()时,它会自动知道你调用的是什么类型的geometric_figure(圆、方、三角、..),并调用这个画法

要手动检查他的具体课程是什么,你可以做什么:

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

一个流行的例子是当你想引用一个像这样的通用对象时

Object x = new AnyClass();

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

【讨论】:

  • 谢谢你有用的例子,我明白了。
  • 很高兴能提供帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2021-04-05
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多