C# の継承




 
オブジェクト指向プログラミングの三大機能として、継承、カプセル化、ポリモーフィズムを総称しますが、ここでは主に継承の機能について紹介します。

 

新しいクラスを作成するときに、この新しく定義されたクラスを使用して既存のクラスを継承することができ、継承により、新しいクラスを作成するときに継承されたクラスに定義されているメンバーを再利用、拡張、および変更できます。継承したクラスを「基底クラス(親クラス)」、基底クラスを継承したクラスを「派生クラス(子クラス)」といいます。

C# では単一継承のみがサポートされていることに注意してください。つまり、派生クラスは 1 つの基本クラスのみを継承できますが、継承は渡すことができます。たとえば、ClassC が ClassB を継承し、ClassB が ClassA を継承すると、ClassC は ClassB を継承し、 ClassAのメンバー全員。

1. 基本クラスと派生クラス

クラスを使用して別のクラスを継承するには、以下に示すようにコロン:を使用する必要があります。

[例] 例を使用して、基本クラスと派生クラスの実装を示します。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args) 
        {
            Rectangle oblong = new Rectangle();
            oblong.setWidth(3);
            oblong.setHeight(4);
            int area = oblong.getArea();
            Console.WriteLine("長方形の面積は:{0}", area);
        }
    }
    // 基底クラス
    class Shape{
        protected int width, height;
        public void setWidth(int w){
            width = w;
        }
        public void setHeight(int h){
            height = h;
        }
    }
    // 派生クラス
    class Rectangle : Shape{
        public int getArea(){
            return width*height;
        }
    }
} 

操作の結果は次のようになります。

長方形の面積は:12

2. 多重継承

単一継承とは対照的に、多重継承は、クラスが複数の基本クラスを同時に継承できることを意味します。C# は多重継承をサポートしていませんが、インターフェイスを使用して多重継承を実現できます。以下に例を示します。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args) 
        {
            Rectangle oblong = new Rectangle();
            oblong.setWidth(3);
            oblong.setHeight(4);
            int area = oblong.getArea();
            int girth = oblong.getGirth();
            Console.WriteLine("長方形の面積は:{0}", area);
            Console.WriteLine("長方形の周囲は:{0}", girth);
        }
    }
    // 基底クラス
    class Shape{
        protected int width, height;
        public void setWidth(int w){
            width = w;
        }
        public void setHeight(int h){
            height = h;
        }
    }
    // インターフェイスを定義
    public interface Perimeter{
        int getGirth();
    }
    // 派生クラス
    class Rectangle : Shape, Perimeter{
        public int getArea(){
            return width*height;
        }
        public int getGirth(){
            return (width+height)*2;
        }
    }
} 

操作の結果は次のようになります。

長方形の面積は:12
長方形の周囲は:14

インターフェースに関する関連知識は後ほど詳しく紹介しますので、ここで誰でも理解できます。

「 C# の継承」についてわかりやすく解説!絶対に観るべきベスト2動画

C#プログラミング入門 2019 第13回 (3) クラスの継承