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

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

継承 コンストラクター


独習C# 第3版より

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

コンストラクターは基本クラス、派生クラスが
それぞれ独自のコンストラクターを持つことができる。

using System;

namespace ConsoleTest {
    class Program {
        static void Main(string[] args) {
            Triangle t1 = new Triangle("isosceles", 4.0, 4.0);
            Triangle t2 = new Triangle("right", 8.0, 12.0);

            Console.WriteLine("Info for t1:");
            t1.ShowStyle();
            t1.ShowDim();
            Console.WriteLine("Area is " + t1.Area());

            Console.WriteLine();

            Console.WriteLine("Info for t2:");
            t2.ShowStyle();
            t2.ShowDim();
            Console.WriteLine("Area is " + t2.Area());

        }
    }
    //平面図形用のクラス
    class TwoDShape {
        double pri_width;
        double pri_height;

        //wightプロパティとHightプロパティ
        public double Wight {
            get { return pri_width; }
            set { pri_width = value < 0 ? -value : value; }
        }
        public double Height {
            get { return pri_height; }
            set { pri_height = value < 0 ? -value : value; }
        }

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

    //三角形用にTwoDShapeから派生したクラス
    class Triangle : TwoDShape {
        string Style;

        //Triangleクラスのコンストラクター
        public Triangle(string s,double w,double h) {
            Wight = w; //基本クラスの初期化
            Height = h; //基本クラスの初期化

            Style = s; //派生クラスの初期化
        }

        public double Area() {
            return Wight * Height / 2;
        }
        public void ShowStyle() {
            Console.WriteLine("Triangle is "+Style);
        }
    }
}

実行結果
f:id:tos5511:20160109225719j:plain