【发布时间】:2012-05-23 23:34:10
【问题描述】:
【问题讨论】:
【问题讨论】:
当您希望所有子类型实现不同的特定逻辑时,您希望使用接口,例如在这种情况下:
interface GeometricalShape{
# only abstract methods are allowed
GetArea();
GetPerimeter();
}
在这种情况下,每个几何形状都必须实现特定的逻辑来计算面积和周长。
当您的子类型必须实现一些特定的逻辑时,您想使用抽象类,但您仍然拥有所有子类型共有的逻辑,例如这种情况:
abstract class GeometricalShape{
name;edgeCount;
protected GeometricalShape(name,edgeCount)
#abstract methods
abstract GetArea();
abstract GetPerimeter();
#Concrete methods
GetName(){return name;}
GetEdgesCount(){return edgesCount}
在此示例中,每个几何形状都必须像以前一样实现有关面积和周长的特定逻辑,但现在所有子类型将共享用于检索几何名称和边数的通用方法,这将是多余的定义在每个子类中。
【讨论】: