c#の継承について

継承とは共通した変数やメソッドを作成したクラスを作り、派生クラスで流用する仕組みです。

使用するときは下記のように書きます。

class クラスB : クラスA
class クラスC : クラスA

通常、他のクラスの変数やメソッドを使用するときは、インスタンスして使用しますが、 継承の場合はインスタンスする必要がなく、親クラスの内容を丸々使うことができます。

それでは、実際にコードを作成してみます。 まずは親となるクラスAから

namespace Keisho
{
    internal class Class_A
    {
        public string className;

        public void Message(string _string)
        {
            MessageBox.Show(_string + "からアクセスしています。");
        }

    }
}

このクラスを継承するクラスB, Cを作成します。

クラスB

namespace Keisho
{
    internal class Class_B:Class_A
    {
        public Class_B()
        {
            className = "Class_B";
        }
    }
}

クラスC

namespace Keisho
{
    internal class Class_C:Class_A
    {
        public Class_C()
        {
            className = "Class_C";
        }
    }
}

ClassB,CはClassAを継承しているため、ClassAに書かれた変数classNameを再定義する必要はありません。 また、下記の戻り値がない書き方はコンストラクタと呼ばれ、最後のMain Classで記述されているClassB,Cがインスタンスされた時に 自動的に変数に値を代入される書き方となります。

コンストラクタ

        public Class_B()
        {
            className = "Class_B";
        }

最後にMainからこれらのクラスをインスタンスして使用します。

namespace Keisho
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            List<Class_A> classes = new List<Class_A>()
            {
                new Class_B(),
                new Class_C()
            };

            foreach (Class_A c in classes)
            {
                c.Message(c.className);
            }
        }
    }
}

実行結果