如何在继承类中强制实现抽象类成员?

时间:2014-05-08 10:54:15

标签: c# inheritance interface abstract-class

我有以下两个类:

abstract class LogItem    {       
    public String payload { get; set; }       
    public String serverId { get; set; }     
    public DateTime timeRecieved { get; set; }

}

  class MyLogItem : LogItem
{
  //No I want this to have to have the members from the abstract class above, as if it where an interface?
}

所以换句话说,我想要一个类型if接口可以有定义或变量,所有实现它的类必须有,但是如果需要它们可以添加更多?

上面的示例构建,即使我不添加抽象类中的成员。

2 个答案:

答案 0 :(得分:2)

修改的 忘记我之前说过的话。这些是属性,而不是方法。要使它们可以在派生类上访问,您可以将它们设为protectedpublic。不同之处在于公共成员对世界是可见的,而受保护的成员对于类和子类是可见的。

从LogItem派生的任何类都可能包含其他变量。

abstract class LogItem    {       
    public String payload { get; set; }       
    public String serverId { get; set; }     
    public DateTime timeRecieved { get; set; }

}

 class MyLogItem : LogItem
{
  //No I want this to have to have the members from the abstract class above, as if it where an interface?
   private void TestMethod(){
     String test = payload;
   }
}

查看this帖子了解更多信息

您的MyLogItem类可以直接引用上述任何成员。他们可以访问

您可以声明具有这些

的界面
 public interface MyInterface {
     public String payload { get; set; }       
     public String serverId { get; set; }     
     public DateTime timeRecieved { get; set; }
 }

和你的班级

 public class MyLogItem : MyInterface 
{
   String _payload;
   public String payload { get{ return _payload; } set {_payload=value;} }
   ...
}

答案 1 :(得分:0)

abstract关键字也可以应用于方法,如here所述。