[問題]子類對象賦值給父類對象,父類對象能使用僅子類所有的成員?
代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ch09Ex01
{
public class MyBase
{
public int a = 4;
public virtual int fangfa()
{
return a;
}
}
public class MyClass : MyBase
{
public int b = 100;
public override int fangfa()
{
return a + b;
}
}
class Program
{
static void Main(string[] args)
{
MyClass shiyan1 = new MyClass();
MyBase shiyan2 = shiyan1;
Console.WriteLine(shiyan2.fangfa());
Console.ReadKey();
}
}
}
結果是顯示104,也就是說定義父類時所定義的虛擬方法在定義子類時被重寫,使該方法
使用到僅僅子類所有的成員。這樣當一個子類實例將自己賦給父類實例的時候,父類實
例的原虛擬方法將被替換,而且該方法將能使用子類的成員。
如上例所示,父類實例shiyan2根本沒有變量b,但他的方法fangfa()卻能調用變量b,是
不是這樣?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.5.86.3
推
02/02 09:32, , 1F
02/02 09:32, 1F
→
02/02 11:06, , 2F
02/02 11:06, 2F
→
02/02 11:09, , 3F
02/02 11:09, 3F
→
02/02 11:11, , 4F
02/02 11:11, 4F
→
02/02 11:12, , 5F
02/02 11:12, 5F
→
02/02 11:15, , 6F
02/02 11:15, 6F
→
02/02 11:15, , 7F
02/02 11:15, 7F
推
02/02 12:30, , 8F
02/02 12:30, 8F
推
02/02 12:31, , 9F
02/02 12:31, 9F
推
02/02 13:00, , 10F
02/02 13:00, 10F
→
02/02 18:13, , 11F
02/02 18:13, 11F
推
02/08 11:40, , 12F
02/08 11:40, 12F