Apex super キーワードの使用方法

概要
super キーワードは、仮想クラスまたは抽象クラスから拡張されるクラスで使用できます。
super を使用することによって、親クラスのコンストラクターおよびメソッドを上書きできます。

1.仮想クラスの定義

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 メソッドを上書きする次のクラスを作成できます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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());
    
  }
}

 

IT

Posted by arkgame