有时我创建一个BaseClass实现接口的抽象IBaseClass并创建ChildClass扩展BaseClass. 我的意思是:
public interface IBaseClass {
}
public abstract class BaseClass implements IBaseClass {
}
public class ChildClass extends BaseClass {
}
现在说我有一个接口IChildClass并ChildClass实现它。
public class ChildClass extends BaseClass implements IChildClass {
}
并说IBaseClass有方法someMethod。现在,如果您想ChildClass通过实现接口使用 的实例,IChildClass例如:
IChildClass obj = new ChildClass();
然后你不能打电话obj.someMethod()。然后你需要这样做:
public interface IChildClass extends IBaseClass {
}
您可以在Java 1.2 文档中找到该接口java.util.List不扩展的接口java.util.Collection,它在最新版本中是这样做的。java.util.List是当时的最高接口,并且java.util.AbstractList实现List了ArrayList. AbstructList依次扩展AbstractCollection. AbstractCollection那时是至高无上的阶级。目前AbstractCollection实现Collection. 因此很明显,遵循这种设计模式是为了牢记 Java 的可扩展模式。