抽象クラス
インスタンスを作ることができないクラス。別のクラスに継承させることでインスタンスを作る。
抽象クラスでは通常のプロパティ、メソッドの他に抽象メソッド(実装していないメソッド)を定義することができる。抽象クラスを継承した子クラスでそのメソッドの実装を義務づけることができる。
abstract function (メソッド名) (あれば引数);
親クラスで抽象メソッドが定義されていた場合、その抽象メソッドを子クラスで定義し、実装する必要がある。
抽象メソッドを一つでも持っているクラスは全て抽象クラスとなる。抽象クラスはクラス定義の時に
…
}
ではなく、
abstract class (クラス名) {
…
}
というように、abstract classというように定義する必要がある。
PHPでは、2つ以上のクラスを同時に継承(多重継承)することはできないが、親クラスを継承した子クラスを継承し、孫クラスを作る、というようなことは可能。
関連用語
抽象型
(抽象クラス から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/20 17:00 UTC 版)
抽象型(ちゅうしょうがた、英: abstract type)とは、コンピュータプログラミングの型システムのうち、名前的型システム (nominal / nominative type system) [注釈 1][1]における型の一種であり、直接インスタンス化することができないという特徴を持つ。対義語は具象型(英: concrete type)であり、具象型はインスタンス化することができる。抽象型の変数に格納された実際の値は、何らかの存在型 (existential type) を持つ[2]。
注釈
出典
- ^ Benjamin C. Pierce「19.3 名前的型システムと構造的型システム」『型システム入門 −プログラミング言語と型の理論−』オーム社、2013年3月26日。ISBN 978-4274069116。
- ^ Mitchell, John C.; Plotkin, Gordon D.; Abstract Types Have Existential Type, ACM Transactions on Programming Languages and Systems, Vol. 10, No. 3, July 1988, pp. 470–502
- ^ Abstract Methods and Classes (The Java™ Tutorials > Learning the Java Language > Interfaces and Inheritance)
- ^ 29.7. abc --- 抽象基底クラス — Python 3.6.13 ドキュメント
- ^ Riel, Arthur (1996). Object-Oriented Design Heuristics. Addison-Wesley Professional. p. 89. ISBN 020163385X
- ^ Michael Kölling. “進化するJavaインタフェース - Javaの多重継承を理解する -”. 2021年11月29日閲覧。
- ^ Default Methods (The Java™ Tutorials > Learning the Java Language > Interfaces and Inheritance)
- ^ インターフェイス - C# リファレンス | Microsoft Docs
- ^ コードをもっとオブジェクティブに:Cocoaの素、Objective-Cを知ろう(6)(2/4 ページ) - @IT
- ^ Protocols — The Swift Programming Language (Swift 5.5)
- ^ Swiftにおけるプロトコル指向プログラミング | InfoQ
- ^ Protocols — The Swift Programming Language (Swift 5.5), §Protocol Extensions
- ^ Extensions — The Swift Programming Language (Swift 5.5)
- 抽象クラスのページへのリンク