设计模式:OOP和继承

时间:2015-07-17 05:22:05

标签: java oop inheritance

我有一个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是抽象类?另外,请建议任何更好的模式。

1 个答案:

答案 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的签名。