【发布时间】:2016-11-29 14:38:58
【问题描述】:
我正在尝试实现两级继承。目前,有一个抽象类和一个继承类:
public abstract class A
{
public abstract void func();
}
public class B : A
{
public override void func()
{
.......
}
}
我想创建 B 类的两个专用实例,但我希望 A 类公开这些函数。我打算这样做,
public abstract class A
{
public abstract void func();
}
public class B : A
{
public virtual void func();
}
public class C : B
{
public override void func()
{
........
}
}
public class D : B
{
public override void func()
{
........
}
}
这个实现是错误的,但这是我的意图。我将如何实现它?
【问题讨论】:
-
class B是否应该实现func()? -
实际上 B 类没有实现 func()。我会更新问题。
-
如果它没有实现并且您没有提供“空”实现,那么
class B也是抽象的(这很好,除非您需要能够创建具体的 @ 987654326@). -
B 类有其他实现的函数(重写函数)
-
考虑
throw NotImplementedException();用于B中的方法。但最好改成Babstract。
标签: c# oop inheritance virtual abstract