👻
【Apex入門】継承・override・virtual・abstract・interfaceの違いをやさしく解説
キーワードのまとめ
virtual
(メソッド単位でオーバーライドを許可)
- オーバーライド可能なメソッドに付ける修飾子
- Apexではクラスやメソッドはデフォルトで
virtual
ではない(=オーバーライド不可) - 明示的に
virtual
を付けないと、継承先でオーバーライドできない
override
(子クラスでオーバーライド)
- 親クラスで
virtual
またはabstract
が付いているメソッドを上書き実装する - 使うには元のメソッドが
virtual
かabstract
である必要がある
abstract
(クラスやメソッドに使う)
- インスタンス化できないクラス(テンプレート的な存在)
- 共通処理や実装を強制したいメソッドを定義するのに使う
- 抽象クラス内に**抽象メソッド(中身なしのメソッド)**がある場合、クラスにも
abstract
が必要 - 抽象メソッドは、継承先のクラスで必ず実装しないとコンパイルエラー
extends
(クラスを継承)
- 他のクラスを継承するときに使うキーワード
- Apexではクラスの継承は1つだけ(多重継承は不可)
interface
(実装だけ定義する型)
- メソッドの定義だけ(中身なし)
- 複数の
interface
を実装可能 - インスタンス化は不可
implements
(interfaceを実装)
- interfaceで定義されたメソッドをすべて実装する必要あり
- 1つのクラスで**複数のinterfaceを
implements
**できる
final
(継承・オーバーライド不可)
- クラスやメソッドに使う
-
final class
→ 継承できない -
final method
→ オーバーライドできない - セキュリティや予期しない変更防止に使う
Discussion