请帮我使用对象的继承

时间:2010-07-12 09:13:11

标签: c#

我尝试在所有对象类中使用继承。下面是我的例子

public class Member : Order
{
   private string _employeeId;
   private string _employeeName;

   public string EmployeeId
   {
       get { return _employeeId; }
       set { _employeeId = value; }
   }

   public string EmployeeName
   {
       get { return _employeeName; }
       set { _employeeName = value; }
   }

}


public class Order
{
    private int _id;
   private string _itemName;

   public string ID
   {
       get { return _id; }
       set { _id = value; }
   }

   public string ItemName
   {
       get { return _itemName; }
       set { _itemName= value; }
   }

}

3 个答案:

答案 0 :(得分:5)

继承在类之间建立“IS A”关系。

“会员是订单”极不可能,因此您没有正确使用它。

如果没有进一步的信息,很难给你更好的建议。

更合理的模式是:

  • 员工 一个人
  • 会员 是员工(此处有疑问)
  • 会员 0或更多订单

class Person { }
class Employee: Person { }
class Member : Employee
{
    public IList<Order> Orders { get; private set; }
}

class Order
{
   public int MemberId { get; private set; }
}

答案 1 :(得分:0)

由于您使用的是C#,因此可以使用自动属性缩短示例:

public class Order
{
    public string Id { get; set; }
    public string ItemName { get; set; }
}

public class Member : Order
{
    public string EmployeeId { get; set; }
    public string EmployeeName { get; set; }
}

现在,您想在Order和Member上使用相同的Name和Id属性吗?然后你会这样做:

public class Order
{
    public string Id { get; set; }
    public string Name { get; set; }
}

public class Member : Order
{
}

但是,您能否详细说明您希望将这两个类用于什么?为什么会员继承自Order?

答案 2 :(得分:-1)

是的,看起来不错。我不能说对这些特定的类使用继承是否有意义,但如果这是你想要的,那么你就是正确的。

在C#版本3及更高版本中,您可以使用速记来创建属性:

public class Member : Order  { 

  public string EmployeeId { get; set; } 
  public string EmployeeName { get; set; }

} 

public class Order { 

   public string ID { get; set; }
   public string ItemName { get; set; }

}