一个抽象类继承另一个抽象类问题
我有一个继承的架构如下图所示:一个抽象类继承另一个抽象类问题
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()
的属性。在您向我们展示的结构中,它是多余的,可以省略。所以,“修正”的代码看起来更象:
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
}
这个作品!谢谢 – stoney78us
您是否打算在'BaseFileAttachment'上提供一个全新的'GetName'方法来隐藏'BaseAttachment.GetName'?如果没有,只需省略重新声明。 –
为什么'ExchangeFileAttachment'声明为'abstract'? –
“但是,上面的声明是错误的”你应该在你的问题中提供更多细节。它不会编译?它没有做你想做的事吗?如果是这样,那么错误或不良行为是什么? – Servy