之前课堂上布置的作业,今天看code 不是很明白为什么这样设计。定义一个集合set 为 abstract class部分代码如下:public abstract class FSet {
//定义 abstract method
abstract boolean isEmptyMethod();
//定义static method
public static boolean isEmpty(FSet s) {
return s.isEmptyMethod();
}
}
public class EmptySet extends FSet {
boolean isEmptyMethod() {
return true;
}
}
public class Include extends FSet {
boolean isEmptyMethod() {
return false;
}
}为什么要定义一个static 方法 然后去调用 abstract 方法? 这样做的目的是什么?直接用子类去override 父类方法 有什么缺陷吗?
3 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
子类实现抽象方法,这样不同的子类对这个抽象方法有不同的实现,客户程序只需保持对子类对象的父类引用即可而无需关心具体的子类到底是哪个,这样就实现了多态调用。
添加回答
举报
0/150
提交
取消