父类或基类中的方法和字段

时间:2017-02-27 16:03:43

标签: c# oop

我有一个Employee基类以及一个FullTimeEmp和一个PartTimeEmp派生类。我希望能够使用方法获得员工的类型。我打算在EmployeeTypeFullTimeEmp类的构造函数中设置PartTimeEmp

我应该将GetEmployeeType方法和字段employeeType放在基类还是派生类中?所有员工必须具有employeeType并且能够返回employeeType,但该值在派生类中设置。

编辑:我知道如何编写两种替代方案,但我不知道从oop角度来看哪个是正确的选择。我不认为这是一个意见问题。我认为有一种正确的,一种不正确的编码方式。

3 个答案:

答案 0 :(得分:1)

如果我理解你想要的东西,这是一个可能的解决方案:

public class Employee
{
    public Type EmployeeType { get { return GetType(); } }
}

public class FullTimeEmp : Employee { }

在这种情况下,您不需要在派生类中设置Type。如果你想将其他东西作为字符串返回,这是另一种解决方案:

public class Employee
{
    public virtual string EmployeeType { get { return "Employee"; } }
}

public class FullTimeEmp : Employee { 
    public override string EmployeeType { get { return "FullTimeEmp"; } }
}

使用抽象基类:

public abstract class Employee
{
    public abstract string EmployeeType { get; }
}

public class FullTimeEmp : Employee { 
    public override string EmployeeType { get { return "FullTimeEmp"; } }
}

我希望能回答你的问题。

答案 1 :(得分:0)

类似的东西:

public abstract class Employee
{
    public abstract string Type { get; }
}

public class FullTimeEmployee : Employee
{
    public override string Type { get; } = "Full Time";
}

答案 2 :(得分:0)

要查看Employee的类型,您可以在实例中使用Object.GetType()函数,它将返回Type个对象。 实施例

FullTimeEmp emp = new FullTimeEmp();
Type t = emp.GetType();

您可以在Object.GetType()

上查看有关该信息的更多信息

编辑:

由于两个父类都需要employeeType,因此可以在基类上设置字段employeeType和方法GetEmployeeType,并在父类构造函数上设置字段的值。

或者像Evgeni所说,你也可以使基类抽象,放置一个抽象的get属性,每个父类实现它们自己的属性版本。