using System;
// 基本クラス
class BaseClass
{
/* viertualキーワードを使用してoverride
* できるようにしておく */
public virtual void printOut()
{
Console.WriteLine("BaseClass");
}
}
// 派生クラス1
class DerivedClass1 : BaseClass
{
// new演算子を使用して隠蔽
new public void printOut()
{
Console.WriteLine("DerivedClass1");
}
}
// 派生クラス2
class DerivedClass2 : BaseClass
{
// override
public override void printOut()
{
Console.WriteLine("DerivedClass2");
}
}
class MainClass
{
static void Main()
{
// BaseClass型の変数を宣言
BaseClass sample1,sample2;
/* sample1,2にDerivedClass1,2のインスタンスを
* Upcastして代入 */
sample1 = new DerivedClass1();
sample2 = new DerivedClass2();
// 呼び出されるMethodを確認
sample1.printOut();
sample2.printOut();
/* 出力値
* BaseClass
* DerivedClass2
* new演算子を使用した隠蔽だと
* ポリモーフィズム(多様性)は機能しない */
}
}
0 コメント:
コメントを投稿