sto*_*8us 5 .net c# inheritance abstract-class encapsulation
我有一个继承架构,如下所示:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我基本上想调用ExchangeFileAttachment类的GetName()方法; 但是,上述声明是错误的.对此有任何帮助表示赞赏.谢谢
tme*_*ser 19
我看到的两个直接问题是你的最后一个ExchangeFileAttachment类被声明abstract,所以你永远无法实例化它.除非你有另一级别的继承,否则你没有向我们展示,所以无法调用它 - 没有办法访问它.另一个问题是,BaseFileAttachment有一个被隐藏的属性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;
}
}
Run Code Online (Sandbox Code Playgroud)
我在引号中加了修正,因为这个用例仍然没有多大意义,所以我希望你能提供更多的信息,或者这在你的结尾更有意义.
Hei*_*nzi 11
只需删除重新声明BaseFileAttachment:
public abstract class BaseFileAttachment : BaseAttachment
{
}
Run Code Online (Sandbox Code Playgroud)
BaseFileAttachment已经GetName从中继承了抽象声明BaseAttachment.如果您真的想再次提及它BaseFileAttachment,请使用以下override关键字:
public abstract class BaseFileAttachment : BaseAttachment
{
public override abstract string GetName(); // that's fine as well
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16999 次 |
| 最近记录: |