java继承和实用程序方法及变量
我习惯于仅在child类是super类的更具体版本时使用继承。因此,我想知道从祖先继承一个类,只在父类中存储一个变量(所有继承的类都将使用该变量)是否正确
例如:
public abstract class EmployeeDetail{
private final Employee executor;
public EmployeeDetail(final Employee executor) {
this.executor = executor;
}
protected Employee getExecutor(){
return this.executor;
}
public abstract boolean edit(final Employee id);
}
public class EmployeeDetailLevel1 extends EmployeeDetail {
public EmployeeDetailLevel1(final Employee executor) {
super(executor);
}
public boolean edit(final Employee id){
// some implementation that works with parent executor variable
return false;
}
}
问题:
- 从OOP的角度来看,这段代码正确吗?在这种情况下可能是的,因为父类
EmployeeDetail
指定了一个抽象方法,但是如果没有抽象/普通方法呢李> - 如果我需要一些使用所有子类的实用方法呢?我应该把它移到另一个静态实用程序类中,还是可以放在
EmployeeDetail
中李>
# 1 楼答案
以下是我不这么做的几个原因:
每次你有一个“实用工具”,或者想以这种方式“共享代码”,这意味着你缺少一个抽象。需要有一些东西能做你想分享的事情,而且是专门做的。它可以同时为不再需要这种逻辑的下游事物定义不同的接口