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