作者AJE (小杰)
看板C_Sharp
标题[问题] 继承与虚拟方法的问题
时间Wed Nov 24 10:21:49 2010
想请问有关继承与覆写虚拟函数的问题
以下是我写的测试程式:
//Class宣告--------------------------------------
public class Father
{
public int CalcVal()
{
return Data();
}
virtual public int Data()
{
return 10;
}
}
public class Child : Father
{
override public int Data()
{
return 200;
}
}
//Class宣告--------------------------------------
//主程式
Child Val = new Child();
MessageBox.Show(Convert.ToString(Val.CalcVal()));
因为CalcVal是父类别的函式,而父类别也有自己的Data()函式,
所以我本来以为输出的值是10,但是实际输出的结果是200,
我想请问:
1.是不是只要被覆写之後,父类别中呼叫被覆写的函式时,实际上会
呼叫到子类别中的函式?
2.如果是的话,那麽在父类别中的任何函式,实作上是否最好不要呼叫
任何一个"虚拟"函式,以免未预期的行为发生?
3.在这个例子中,如果我希望输出10,且又希望两个类别保有Data()函式的话,
是不是最好用独立的两个类别来处理,不要用"继承"的方式?
先谢谢版友了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.128.231.175
1F:→ ken1325:Child 覆写了 Data 函式,而你用Child建立物件,显示出来 11/24 11:42
2F:→ ken1325:当然就是200。 11/24 11:43
3F:→ AJE:了解^^ 11/24 18:01