我有抽象类
Public class Abstract baseClass
{
public abstract string GetString();
public abstract string GetString1();
}
public class DerivedClass : baseClass
{
public override string GetString()
{
return "test data";
}
public override string GetString1()
{
throw new NotImplementedException();
}
}
在上面的代码行中,我必须在派生类中实现这两个抽象方法。但由于某些原因我不想实现所有方法,只有其中一个方法只有GetString()。怎么办呢?
由于
答案 0 :(得分:1)
通常,如果您没有实现所有抽象方法,那么您的新类也是一个抽象类。要获得具体的类,您需要实现所有方法。如果您只想要/需要实现方法的子集,请考虑使用多个接口(一个接口使用GetString,另一个接口使用GetString1)而不是抽象类。然后,您可以使用要在类中使用的方法实现接口。
答案 1 :(得分:1)
如果DerivedClass
将为其他类提供通用功能,则可以将其标记为抽象,在此处实现其中一种方法,然后继承者只需实现其余的方法。
如果您不打算在给定的实现中支持其他方法,您仍然需要在类中公开该方法,但与此处的方法类似,通常会抛出NotSupportedException
。对于void
方法,您只需返回(不执行任何操作)。
最后,如果你想分离出既有方法又有只有一种方法的东西,你可以使用接口。
public interface IBase
{
string GetString();
}
public interface IBasePlus : IBase
{
string GetStringPlus();
}
您可以拥有一个实现IBasePlus
的类,但是您可以将此提供给采用IBase
类型参数的方法,在这种情况下,您将看不到额外的方法。
答案 2 :(得分:0)
将abstract关键字从其他方法中删除,并在基类
中提供默认实现