我有一个Parent类和两个Child Classes。 它还有getEmployeeDetails,它返回Type Employee。员工是经理和工程师扩展的抽象类。
示例代码:
public class Parent{
public Employee getEmployeeDetails(int id){
//doStuff
}
}
public class child1 extends Parent{
@Override
public Manager getEmployeeDetails(int id){
//doStuff
}
}
public class child2 extends Parent{
}
现在我希望我的child1覆盖getEmployeeDetails并返回类型管理器。此外,如果我想在Parent中设置员工特定的详细信息并覆盖它并添加更多oveerridden方法,那么在Parent中应该做什么,因为Employee是抽象类?另外,请建议任何更好的模式。
答案 0 :(得分:0)
public abstract class Parent{
public final Employee getEmployeeDetails(int id){
//doStuff
return getEmployeeDetailsImpl(id);
}
protected abstract Employee getEmployeeDetailsImpl(int id);
}
public final class child1 extends Parent{
@Override
protected final Employee getEmployeeDetails(int id){
//doStuff
return new Manager(id);
}
}
public final class child2 extends Parent{
@Override
protected final Employee getEmployeeDetails(int id){
//doStuff
return new Engineer(id);
}
}
您可能需要根据需要调整getEmployeeDetailsImpl
的签名。