在question中,我了解到多态性有4种类型:
夹杂物
所以我并不完全理解包含的含义,我需要相同的例子来实现这个概念。
答案 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对象)