super キーワードの使用
super キーワードは、仮想クラスまたは抽象クラスから拡張されるクラスで使用できます。super を使用することによって、親クラスのコンストラクターおよびメソッドを上書きできます。
たとえば、次の仮想クラスがあるとします。
1public virtual class SuperClass {
2 public String mySalutation;
3 public String myFirstName;
4 public String myLastName;
5
6 public SuperClass() {
7
8 mySalutation = 'Mr.';
9 myFirstName = 'Carl';
10 myLastName = 'Vonderburg';
11 }
12
13 public SuperClass(String salutation, String firstName, String lastName) {
14
15 mySalutation = salutation;
16 myFirstName = firstName;
17 myLastName = lastName;
18 }
19
20 public virtual void printName() {
21
22 System.debug('My name is ' + mySalutation + myLastName);
23 }
24
25 public virtual String getFirstName() {
26 return myFirstName;
27 }
28}
Superclass を拡張し、printName メソッドを上書きする次のクラスを作成できます。
1public class Subclass extends Superclass {
2 public override void printName() {
3 super.printName();
4 System.debug('But you can call me ' + super.getFirstName());
5 }
6}Subclass.printName をコールした場合に期待される出力は、「My name is Mr. Vonderburg. But you can call me Carl.」です。
super を使用して、コンストラクターを呼び出すこともできます。次のコンストラクターを SubClass に追加します。
1public Subclass() {
2 super('Madam', 'Brenda', 'Clapentrap');
3}Subclass.printName の期待される出力は、「My name is Madam Clapentrap. But you can call me Brenda.」です。
super キーワード使用のベストプラクティス
- virtual クラスまたは abstract クラスから拡張されるクラスのみが super を使用できます。
- override キーワードで指定されているメソッドでのみ super を使用できます。