「サブクラス (計算機科学)」の版間の差分
削除された内容 追加された内容
AzureWingedMagpie (会話 | 投稿記録) 編集の要約なし |
AzureWingedMagpie (会話 | 投稿記録) 編集の要約なし |
||
1行目:
[[オブジェクト指向プログラミング]]において '''サブクラス'''とはその[[スーパークラス (計算機科学)|スーパークラス]]のメンバ([[フィールド (計算機科学)|フィールド]]と[[メソッド]])を[[継承]]する[[クラス (コンピュータ)|クラス]]のことである。
しかし、オブジェクト指向プログラミングにおいて、サブクラスを単に、スーパークラスの機能を拡張したものであるとだけ理解するのは、賢明ではない。▼
サブクラスは、スーパークラスの特殊化したものであると定義することで、見通しの良いプログラムが構築できる。サブクラスは、そのスーパークラスの一種であると考えるのが正しい。▼
*任意のクラスを継承するサブクラスとは、そのスーパークラスを特化したものである。
9 ⟶ 8行目:
▲猫のサブクラスは、「[[ペルシャ猫]]」や「[[マンクス|マンクス猫]]」などである。
マンクス猫は猫の一種である。一方、「猫はマンクス猫の一種である」と言うことはできない。'''このような関係を、[[Is-a|Is-a関係]]と呼ぶ'''。
*Manx is a Cat. は正しい。
*Cat is a Manx. は正しくない。
18 ⟶ 16行目:
[[オブジェクト指向]]においては、サブクラスはスーパークラスの一種である(Subclass is a superclass.)という関係が、必ず成立しなければならない。
サブクラスとスーパークラスはしばしば、[[C++]]開発者[[ビャーネ・ストロヴストルップ]]によって作られた造語として、それぞれ''派生''(''{{lang|en|derived}}'')クラス、''基底''(''{{lang|en|base}}'')クラスと呼ばれる。彼は伝統的命名法よりもより直感でこれらの造語を見いだした。<ref>[[ビャーネ・ストロヴストルップ|Stroustrup, Bjarne]]. ''The Design and Evolution of C++''. Addison-Wesley. Reading, Mass. 1994. ISBN 0-201-54330-3. Page 49</ref>
|