有时我创建一个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 的可扩展模式。