想知道是否有一种方法可以在java中做到这一点。
假设我想创建一个父类(可能是抽象的)并创建多个不同的子类。我希望所有类都有一个特定的字段,但我需要该字段在子上下文中是静态的。有没有办法在父类中定义这个?
例如,假设我对名为foo的字段有getter和setter。在父类中,静态字段被初始化为字符串“foo”。我有两个儿童班abschildone和ABSCHILDON2。我想做的是:
AbsChildOne absOneA = new AbsChildOne();
AbsChildOne absOneB = new AbsChildOne();
AbsChildTwo absTwo = new AbsChildTwo();
absOneA.setFoo("bar");
System.out.println("absOneB "+absOneB.getFoo());
System.out.println("absTwo "+absTwo.getFoo());
返回
absOne2 bar
absTwo foo
换句话说,静态字段对于子类来说只是静态的,而不是其他子类。
1条答案
按热度按时间ax6ht2ek1#
事实是
static
在类级别,因此每次都有一个值classes
包括subclasses
(不要与类示例混淆)。因此,在使用static(甚至init)时,不需要有示例(new
)String s_get_static_value = ClassName.value
. 每次,每次ClassName_instances
一次只有一个值适用于所有情况instances
. 因此,一旦更改(在类级别,instance)将反映到所有示例(隐含的类级别)。关键是不能保持从同一个静态派生的2个单独的静态(总是有1个值而不是2)。
现在,如果希望有一个扩展字段父级,每个子级有一个单独的值(类级只有1个,所有示例都派生自
Type
.Type
也可以是一个不同的子类。Parent_Type
不等于Child_type
即使Child
延伸Parent
).考虑逻辑的偶然性。(要求:与你的相同,但没有静态)
也许这能帮你。
输出:
关于测试,在代码开发之前。如果代码中存在逻辑错误,那么测试会带来什么结果呢(整个测试套件将失败,并且在继续之前有一些关键缺陷需要解决……)很好地了解测试api的各种设置\ujunit,但这不是主要范围。代码设计是为了正常运行,而不是为了测试而进行的代码设计(主要问题来自代码设计
static
而不是来自how to test
)注意:您必须添加一些逻辑来根据继承进行调整(保留字段),但是为什么不更改逻辑并允许另一个不同的字段作为子字段呢?它很容易实现,也可以使用静态的。
只需比较每个场景所需的代码行,并询问它是否真的值得?度量(即使在代码行内)也在质量代码中起作用。