導入
継承はオブジェクト指向プログラミングの原則であり、とりわけオブジェクトの再利用性と適応性を可能にします。このように呼ばれるのは、原理が家系図の原理とある程度同じであるためです。この原則は、「娘」が「母親」の特性を受け継ぐクラスに基づいています。
各クラスには独自の属性やメソッドがあります。子クラスが親クラスから継承すると、その属性とメソッドを使用できます。
したがって、各子クラスは、その親クラスと同じ特性を持ちながら、これらの親クラスの特性に対する追加の特性 (特殊化) の恩恵を受けることができます。継承された (子) クラスのすべてのメソッドは再定義できます。これは継承ポリモーフィズムと呼ばれます。プログラマが制限を定義していなければ、各子クラスが別のクラスの親クラスになる可能性があります。

継承関係を表す UML図の基本的な例
子クラスが親クラスからプロパティを継承するには、親クラスのプロパティに互換性のある可視性属性が必要です。通常、可視性には次の 3 つのレベルがあります。
-
Public最も広く可視化されます (教室の外から直接アクセス可能) -
Privateは最も制限が厳しい (現在のクラスからのみアクセス可能) -
Protectedは中間クラスであり、現在のクラスとすべての子クラスに表示されますが、親/娘クラスの外部からはアクセスできません。

継承の概念の性質
これは次のような関係です。
- 推移性: B が A から継承し、C が B から継承する場合、C は A から継承します。
- 非再帰: クラスはそれ自体から継承できません。
- 非対称: A が B から継承する場合、B は A から継承しません。
- 循環なし: B が A から継承すること、C が B から継承すること、および A が C から継承することはできません。
例

PHP
/* クラス宣言 */ class Animal { //パブリックデータメンバー$name ; //コンストラクターpublic function __construct ( $newName ) { } ; //メソッドpublic function acceptName ( $newName ) { } ; } class Cat extends Animal { //コンストラクターpublic function __construct ( $newName ) { } ; //メソッドpublic function meow ( ) { } ; } class Dog extends Animal { //コンストラクターpublic function __construct ( $newName ) { } ; //メソッドpublic function bark ( ) { } ; } /* クラスの使用*/ //犬クラスのインスタンス化(toutouは犬型オブジェクトになります) $toutou = new Dog ( 'Rex' ) ; //メソッドの 1 つを使用して犬にメッセージを送信します (ここでは bark) $toutou -> bark ( ) ; // Dog クラスのメソッド$toutou -> acceptName ( 'Isidor' ) ; // Animal 親クラスから継承されたメソッド
ジャワ
/* クラス宣言 */ public class Animal { // メンバーデータ 文字列名; //パブリックコンストラクター Animal ( ) { } ; //パブリックメソッドacceptName ( String newName ) { } ; } public class Cat extends Animal { //パブリックコンストラクターCat ( ) { } ; //メソッドpublic meow ( ) { } ; } public class Dog extends Animal { //パブリックコンストラクターDog ( ) { } ; //メソッドpublic bark ( ) { } ; } /* クラスの使用*/ //dog クラスのインスタンス化 (doggie は犬型オブジェクトになります) Dog doggy = new Dog ( "Rex" ) ; //メソッドの 1 つ (ここでは吠える) を使用して犬にメッセージを送信します。吠える( ) ; //dog doggy クラスの barking メソッド。 acceptName ( "イシドール" ) ; //親クラスから継承したメソッドを呼び出す
