Apex super キーワードの使用方法
概要
super キーワードは、仮想クラスまたは抽象クラスから拡張されるクラスで使用できます。
super を使用することによって、親クラスのコンストラクターおよびメソッドを上書きできます。
1.仮想クラスの定義
public virtual class SuperClass {
public String mySalutation;
public String myFirstName;
public String myLastName;
public SuperClass() {
mySalutation = 'Test';
myFirstName = 'yama';
myLastName = 'taro';
}
public SuperClass(String salutation, String firstName, String lastName) {
mySalutation = salutation;
myFirstName = firstName;
myLastName = lastName;
}
public virtual void printName() {
System.debug('名前: ' + mySalutation + myLastName);
}
public virtual String getFirstName() {
return myFirstName;
}
}
public virtual class SuperClass {
public String mySalutation;
public String myFirstName;
public String myLastName;
public SuperClass() {
mySalutation = 'Test';
myFirstName = 'yama';
myLastName = 'taro';
}
public SuperClass(String salutation, String firstName, String lastName) {
mySalutation = salutation;
myFirstName = firstName;
myLastName = lastName;
}
public virtual void printName() {
System.debug('名前: ' + mySalutation + myLastName);
}
public virtual String getFirstName() {
return myFirstName;
}
}
public virtual class SuperClass { public String mySalutation; public String myFirstName; public String myLastName; public SuperClass() { mySalutation = 'Test'; myFirstName = 'yama'; myLastName = 'taro'; } public SuperClass(String salutation, String firstName, String lastName) { mySalutation = salutation; myFirstName = firstName; myLastName = lastName; } public virtual void printName() { System.debug('名前: ' + mySalutation + myLastName); } public virtual String getFirstName() { return myFirstName; } }
Superclass を拡張し、printName メソッドを上書きする次のクラスを作成できます。
public class Subclass extends SuperClass {
public override void printName() {
super.printName();
System.debug('123' + super.getFirstName());
}
}
public class Subclass extends SuperClass {
public override void printName() {
super.printName();
System.debug('123' + super.getFirstName());
}
}
public class Subclass extends SuperClass { public override void printName() { super.printName(); System.debug('123' + super.getFirstName()); } }