我有一个Employee
基类以及一个FullTimeEmp
和一个PartTimeEmp
派生类。我希望能够使用方法获得员工的类型。我打算在EmployeeType
和FullTimeEmp
类的构造函数中设置PartTimeEmp
。
我应该将GetEmployeeType
方法和字段employeeType
放在基类还是派生类中?所有员工必须具有employeeType并且能够返回employeeType,但该值在派生类中设置。
编辑:我知道如何编写两种替代方案,但我不知道从oop角度来看哪个是正确的选择。我不认为这是一个意见问题。我认为有一种正确的,一种不正确的编码方式。
答案 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属性,每个父类实现它们自己的属性版本。