【C#】抽象クラスとインターフェースの違いは何か?

IT

こんばんは、うなうなです。

C#の、抽象クラスとインターフェースってなんだか似てますよね。

両方とも、子(サブクラス)に継承させることで使えるようになります。

しかし、これら2つには決定的な違いがあるのです!

それをメモしておきます!

抽象クラスとインターフェースの違いはここ

◆抽象クラス
・抽象メソッドを持つクラス
・普通のメソッドとかコンストラクタとかを持っててもいい
・単一継承の縛り(子は1つの親クラスからしか継承できない)がある!

◆インターフェース
・抽象メソッドしか持てない!
・インターフェース内の抽象メソッドには、abstractと書かなくてもいい
・多重継承が可能!子クラスは複数の親インターフェースを継承できます

こんな感じです。

インターフェースは他のクラスと違って多重継承ができちゃうのが最大のポイントです。
いろんなところから制約を引っ張ってこれますね。

抽象クラスは抽象メソッド以外にも色々書けるので使いやすいですね。

それでは、また!

タイトルとURLをコピーしました