我有抽象类 Animal,然后我有像 Dog 和 Cat 这样的类,它们扩展了 Animal 类。
我想确保父类 Animal 的所有子类都有一个静态方法:getProperties。即使无法访问我的代码的其他人实现了一个新的 Animal 子类。
我希望它是静态的,因为 Dog 类的所有 Animals 都具有完全相同的属性(或者你不需要 Dog 来知道 Dog 的一般外观),因此它是一个调用的方法是有道理的类类型,而不是类实例。
这可能吗?
最佳答案
A static
在 Java 中意味着方法(例如)与类的任何实例都不相关。它对所有实例都是通用的,它的实现只是嵌套在类中。
当我读到你的问题时,我相信你需要一个 abstract
Animal
中的方法类。
public abstract class Animal {
public abstract <some-return-type> getProperties();
}
在这种情况下,每个继承 Animal
的类必须提供 getProperties
的实现方法(在本例中不是 static
)。
如果您希望它是静态的,只需将其设为静态(在 Animal
类中),但您将拥有一个单一 和共享 实现。
关于java - 如何从抽象类中强制子类实现静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993998/