プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

継承 メンバーへのアクセス


独習C# 第3版より


tos5511.hatenablog.com
こちらの記事の続き。

privateに設定したアクセス制限は継承をしても継続されます。
例えば下記のコードはエラーとなります。

    class Program {
        static void Main(string[] args) {

        }
    }
    // 平面図形のクラス
    class TwoDShape {
        private double Width;  // privateなメンバ
        private double Height; // privateなメンバ

        public void ShowDim() {
            Console.WriteLine("Width and height are " +
                               Width + " and " + Height);
        }
    }

    // TriangleはTwoDShapeから派生
    class Triangle : TwoDShape {
        public string Style;

        public double Area() { 
      //↓基本クラスのprivateなメンバにはアクセスできない
      //↓エラー! privateなメンバにアクセスできない
            return Width * Height / 2; 
        }

        public void ShowStyle() {
            Console.WriteLine("Triangle is " + Style);
        }
    }

privateではなく、protectedを使うことで継承先の派生クラスからはアクセスできるが、
その他のクラスからはアクセスできないよう制御することができる。

    class Program {
        static void Main(string[] args) {

        }
    }
    // 平面図形のクラス
    class TwoDShape {
        protected double Width;  // 今度はprotectedなメンバ
        protected double Height; // 今度はprotectedなメンバ

        public void ShowDim() {
            Console.WriteLine("Width and height are " +
                               Width + " and " + Height);
        }
    }

    // TriangleはTwoDShapeから派生
    class Triangle : TwoDShape {
        public string Style;

        public double Area() { 
            return Width * Height / 2; //今度はOK!! 
        }

        public void ShowStyle() {
            Console.WriteLine("Triangle is " + Style);
        }
    }

以上です。



直近の人気記事
tos5511.hatenablog.com

tos5511.hatenablog.com