Java 当构造函数需要调用可重写方法时,保持其干燥
根据,虽然我理解它出错的原因,但如何在保持代码干燥的同时有效地解决这个问题?我不想将该函数中的内容复制并粘贴到构造函数中 假设我有以下几点Java 当构造函数需要调用可重写方法时,保持其干燥,java,oop,constructor,Java,Oop,Constructor,根据,虽然我理解它出错的原因,但如何在保持代码干燥的同时有效地解决这个问题?我不想将该函数中的内容复制并粘贴到构造函数中 假设我有以下几点 class Parent { Parent() { overridableFunction(); } void overridableFunction() { ... } } class Child extends Parent { Child() { super()
class Parent
{
Parent()
{
overridableFunction();
}
void overridableFunction()
{ ... }
}
class Child extends Parent
{
Child()
{
super();
overridableFunction()
}
void overridableFunction()
{ ... // overridden }
}
理想情况下,我希望子构造函数的执行流是
Parent()-->Parent.overridableFunction()-->Child.overridableFunction()
如果您希望父级
的构造函数执行其自己的overridableFunction()
实现,并且希望子级的构造函数执行其自己的overridableFunction()
实现,那么如何在不复制和粘贴内容的情况下实现这一点呢,你基本上是说你不想让Child
的overridableFunction()
重写Parent
的overridableFunction()
方法
您可以为这两个方法指定不同的名称,或保持名称相同,但要将父方法设置为私有,以避免任何重写。我不确定您为什么要这样做,但这遵循您要求的执行流程:
class Parent
{
Parent()
{
overridableFunction();
}
void overridableFunction()
{ System.out.println("Parent implementation "); }
public static void main(String[] args) {
new Child();
}
}
class Child extends Parent
{
Child()
{
super();
//remove overridableFunction();
}
@Override
void overridableFunction()
{
super.overridableFunction();
System.out.println("Child implementation ");
}
}
不会删除
overridableFunction()来自Child
构造函数的code>导致Parent
和Child
各自执行自己的overridableFunction()
?@c0根据OP编写的内容(理想情况下,我希望执行…
),他希望在创建子类实例时执行这两个方法。因此,他不想移除它。