![](/img/trans.png)
[英]How can I declare an abstract generic class that inherits from another abstract class?
[英]an abstract class inherits another abstract class issue
我有一个继承架构,如下所示:
public abstract class BaseAttachment
{
public abstract string GetName();
}
public abstract class BaseFileAttachment:BaseAttachment
{
public abstract string GetName();
}
public class ExchangeFileAttachment:BaseFileAttachment
{
string name;
public override string GetName()
{
return name;
}
}
我基本上想调用ExchangeFileAttachment类的GetName()方法; 但是,上述声明是错误的。 对此有任何帮助表示赞赏。 谢谢
我看到的两个直接问题是你的最终ExchangeFileAttachment
类被声明为abstract
,所以你永远无法实例化它。 除非你有另一级别的继承,否则你不会向我们展示,所以无法调用它 - 没有办法访问它。 另一个问题是BaseFileAttachment
有一个隐藏BaseAttachment
GetName()
的BaseAttachment
。 在您向我们展示的结构中,它是多余的,可以省略。 因此,“更正”的代码看起来更像是:
public abstract class BaseAttachment
{
public abstract string GetName();
}
public abstract class BaseFileAttachment : BaseAttachment
{
}
public class ExchangeFileAttachment : BaseFileAttachment
{
string name;
public override string GetName()
{
return name;
}
}
我在引号中加了修正,因为这个用例仍然没有多大意义,所以我希望你能提供更多的信息,或者这在你的结尾更有意义。
只需从BaseFileAttachment
删除重新声明:
public abstract class BaseFileAttachment : BaseAttachment
{
}
BaseFileAttachment
已经从BaseAttachment
继承了抽象GetName
声明。 如果您真的想在BaseFileAttachment
再次提及它,请使用override
关键字:
public abstract class BaseFileAttachment : BaseAttachment
{
public override abstract string GetName(); // that's fine as well
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.