【发布时间】:2021-03-23 01:43:56
【问题描述】:
我有两个扩展同一个类的类,例如:
abstract class A {
//functions
}
class B extends A {
//functions
}
class C extends A {
//functions
}
我希望父类中的函数根据调用该函数的子类来更改其行为,例如,A 类中的函数将根据哪个子类调用该函数来执行不同的 if 语句。有没有办法让父类知道哪个子构造函数正在使用它的函数?
【问题讨论】:
-
this.getClass() -
另一种选择是使用
instanceof:if (this instanceof B) {} -
如果我不得不做这样的事情,我可能会重新考虑我的设计。否则,当您将来需要对父级进行子类化时,您可能会遇到问题。用子类的要求简单地覆盖子类中的方法不是更好吗?
-
正是如此。这种技术被称为“状态导向”,在 1960 年代被当作糟糕的实践而被抛弃。
标签: java inheritance parent-child