C# 入門 & 実践 / C sharp
3-12. ポリモーフィズム / 継承 / virtual / override
C#では、多重継承は、出来ないようです。
インターフェイスは複数実装できるようです、インターフェイスに関しては後ほど
class HelloBase
{
private int x = 0;
// Helloクラスからも見えるようにする!
protected int y = 0;
public HelloBase( int x,int y )
{
this.x = x;
this.y = y;
}
public virtual void PrintHello()
{
Console.WriteLine("HelloBase : x={0} y={1}",x, y );
}
}
class Hello : HelloBase
{
public Hello(int x, int y ):base(x, y)
{
}
public override void PrintHello()
{
base.PrintHello();
// x は private なので表示でき無い。
// Console.WriteLine("Hello : {0}", x);
// y は protected なので可
Console.WriteLine("Hello : y={0}", y );
}
static void Main(string[] args)
{
Hello h = new Hello(4,5);
h.PrintHello();
}
}
+ 継承 の書き方。
class Hello : HelloBase
+ base を利用して、基本クラスのコンストラクタ、メソッドを呼び出せる!
// ここで重要なのは、base(x,y)を明記しないといけないということです!
// 基本クラスに、引数 0 の規定コンストラクタがある場合は、baseを呼ばずとも規定コンストラクタが呼び出されます!
public Hello(int x, int y ):base(x, y)
base.PrintHello();
+ 関数をオーバーライドするには、明示的に virtual / override が必要!
+ 変数を派生クラスから利用するには、protected .
+++++++++++++++++++++++++++++++++++++++++++++++++++++
HelloBase : x=4 y=5
Hello : y=5
+++++++++++++++++++++++++++++++++++++++++++++++++++++
実行するとこのようになる。
3-11. 規定コンストラクタ «
3. C# 入門 / 基礎、型、文法、基本? »
3-13. override // new / virtual
C# 入門 & 実践 / C sharp