using System;
class BaseClass
{
public virtual void baseInfo()
{
Console.WriteLine("基本クラス");
}
}
class DerivedClass1 : BaseClass
{
// オーバーライド
public override void baseInfo()
{
Console.WriteLine("派生クラス1");
}
}
class DerivedClass2:BaseClass
{
// 隠蔽
new public void baseInfo()
{
Console.WriteLine("派生クラス2");
}
}
class MainClass
{
static void Main()
{
/* DerivedClass1のインスタンスを
* BaseClass型の変数に代入(アップキャスト)*/
BaseClass bc = new DerivedClass1();
string s="ダウンキャストできない";
if ((bc is DerivedClass1) == true)
{
DerivedClass1 dc1 = (DerivedClass1)bc;
dc1.baseInfo();
}
else
{
Console.WriteLine(s);
}
if ((bc is DerivedClass2) == true)
{
DerivedClass2 dc2 = (DerivedClass2)bc;
}
else
{
Console.WriteLine(s);
}
}
}
0 コメント:
コメントを投稿