在问题中,我了解到多态性有 4 种类型:
强迫,
重载
参数多态性
包容性
所以我没有完全理解Inclusion是什么意思,我需要同样的例子来实现这个概念。
包含多态性意味着您可以从他的超类中实例化一个对象。例如你有
public class Person {
.
.
}
public class Employee extends Person{
.
.
}
所以你可以创建一个对象
Person x = new Employee();
例如,如果您需要创建许多引用单个 superType 的不同对象,这很有用
例如,您有 SuperTyper 几何图形和 SubTyper 图形(圆形、方形、三角形、..)。geometry_figure 可能有两个属性 x,y 用于屏幕位置和一个抽象方法“draw”,用于在屏幕上绘制,每个扩展它的图形都需要实现
感谢dynamic link
java,当你调用geometryFigure.draw()时,它会自动知道你正在调用什么类型的几何图形(圆形、方形、三角形,..),并调用这个绘制方法
要手动检查他的具体课程是什么,您可以执行以下操作:
Geometric Figure x = new Square();
if(x instance of Square){...}
一个流行的情况是当你想引用这样的通用对象时
Object x = new AnyClass();
因为 Object 是每个类都有的通用超类。(当你不扩展任何东西时,默认情况下它扩展对象)
正如已经建议的那样,自己搜索一下以更深入地了解这个主题......这是一种可能的解释:
[...] 子类型化允许编写函数以获取特定类型 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页面...但仍要自行搜索该主题以更深入地了解它!