我正在尝试实现两级继承。目前,有一个抽象类和一个继承类:
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()
{
........
}
}
这个实现是错误的,但这是我的意图。我将如何实现这一目标?
答案 0 :(得分:2)
你没有实现的虚拟方法,所以你应该使类B
抽象,这应该让编译器满意:
public abstract class B : A
{
}
替代方法是为函数func
添加空方法体:
public class B : A
{
public virtual void func()
{
// function has empty method body
// it does not do anything, but you can override functionality in derived classes
}
}
答案 1 :(得分:2)
您可以使用interface而不是抽象类A:
<h:form>
<p:commandButton
value="click me"
onmousedown="mousedown();"
onmouseout="mouseout();"
/>
<p:remoteCommand
name="mousedown"
actionListener="#{commandButtonView.onMousedown}"
/>
<p:remoteCommand
name="mouseout"
actionListener="#{commandButtonView.onMouseout}"
/>
</h:form>
可能对你有帮助。