它具有概念上的含义:此类的行为本身没有任何意义。
诚然,很难想象没有明确定义的扩展点(即抽象方法)的情况,但是有时这将是一个合理准确的问题模型。
你可以有这样的事情:
public abstract class ObjectWithId { private final String id; public ObjectWithId( String id ) { this.id = id; } public final String getId() { return id; }}然后,您可以扩展它以声明具有id的不同类型的对象。在这里,您具有完全指定和实现的行为,但对子类可能没有表现出任何其他行为的限制。
请注意,尽管建模相同事物的一种更整洁的方法是使用合成而不是继承。
public final class ObjectWithId<T> { private final String id; private final T ob; public ObjectWithId( String id, T ob ) { this.id = id; this.ob = ob; } public String getId() { return id; } public T getObject() { return ob; }}但是在引入泛型之前(在Java版本1.4之前),这并没有那么优雅,而且显然比抽象类解决方案要好,因为您必须在类型安全性方面进行交易。



