【发布时间】:2015-12-01 12:31:35
【问题描述】:
好的,所以我有一个类和子类的层次结构。 他们都必须有一定的方法。这些方法位于由超类和下面的所有内容实现的接口中。
他们都应该拥有并定义一种方法,但该方法是“精神上的”,属于静态类型,为给定类的所有实例返回相同的结果。
不幸的是,不能将静态方法作为接口的一部分,而且静态方法不支持继承,它们“隐藏”而不是“覆盖”。
那么,层次结构中的所有类都必须具有并且可以以通用方式调用的静态方法有哪些选项?目前,我将该方法设为非静态的......
此外,理想情况下,这不应该涉及第二个类的层次结构,该层次结构必须仅针对该一种方法保持同步......
非常感谢
======
编辑:人们要求举个例子,所以你去:
好的,假设我有一个动物类的层次结构(抽象动物类>抽象哺乳动物类>猫类、狗类、海豚类等)。 一些行为将是特定于实例的,它们可能有“weight”、“name”、“age”等成员,并有相关的 getter/setter。
但是,可能有一种方法通常会为给定类的所有实例提供相同的结果,例如它可能是其中之一:
-int getNumberOfLegs();
-String getFavouriteFood();
所有的猫都有 4 条腿,所以方法可以是静态的,它不依赖于实例。它更像是元信息。我希望能够做 Cat.getNumberOfLegs()。我想以一种可以被覆盖的方式强制该方法在我的所有层次结构中存在,等等。
【问题讨论】:
-
如果你想得到正确的答案,你需要举一个真实的例子。
-
一个例子可以很好地说明您的潜在需求,而不仅仅是技术方面。
-
提供一些你正在尝试做的简短代码
-
我添加了一个例子。谢谢。
标签: java inheritance static