【发布时间】:2013-02-26 08:18:06
【问题描述】:
public class GrandParent
{
public void walk()
{
...
}
}
public class Parent
{
public void walk()
{
...
}
}
public class Child
{
public void walk()
{
// Here in some cases I want to use walk method of GrandParent class
}
}
现在在 Child.walk() 中,我只想在某些情况下使用 GrandParent.walk()。我怎样才能做到这一点?由于 super.walk() 将始终使用 Parent.walk()。
注意:(请注意,这是一个复杂场景的简化示例)
注意 2: 请仅说明是否有执行此操作的标准程序。我在父类中使用了一个标志,如果孩子想使用 GrandParent 的方法,则设置该标志。但是这个序列变得非常复杂。
【问题讨论】:
-
将您在
Child中使用的相同逻辑也放入Parent。 -
你不能将子实例转换为祖父类型并调用 walk 吗?
-
顺便说一句,您可能想知道您正在通过尝试从 Child 访问 GrandParent 功能来破坏封装。只是一个“好的设计”点,但我觉得它是相关的。有关更多信息,请参阅stackoverflow.com/questions/586363/…
-
@0xCAFEBABE 调用该方法最具体的实现。将孩子强制转换为祖父母不会改变最具体实现的可用性。
-
这个术语让我有点困惑,我习惯于在描述对象树时听到
walk和parent一起使用,而不是类继承。
标签: java inheritance superclass