こんにちは、アンダーソンです。
今回は基本的なクラスの継承の仕方について書いていきたいと思います。
今まで、SalesforceでApexクラスを継承させるということは、
してこなかった&みてこなかったんで、
ちょっとやり方を整理しておこうと思います。
Contents
クラスの継承
まず、Apexではクラスを継承する為に、親になるクラスに対して
abstract修飾子をつけておく必要がありますので、
忘れないようにしておきましょう。
では、今回はPersonクラスとManagerクラスを作ってみたので、
コードを残しておきます。
public abstract with sharing class Person {
private String name;
private static Integer count = 0;
public Person(String name) {
this.name = name;
Person.count++;
System.debug('作成されました');
}
public Integer getCount(){
return Person.count;
}
}
public with sharing class Manager extends Person {
private Integer level = 0;
public Manager(String name,Integer level) {
super(name);
this.level = level;
}
}
こんな感じに書くと、クラスの継承ができます。
Javaと同じように継承元のコンストラクタを継承する際には
Super();で必要に応じて引数を設定します。
Manager manager1 = new Manager('Anderson',9);
Manager manager2 = new Manager('Brooks',5);
Manager manager3 = new Manager('Andy',4);
system.debug(manager3.getCount());
てことでこれを実行すると、

予想通りに出力されました。
抽象メソッドの継承
では同じようにメソッドの継承をやっていきたいと思います。
まず継承元のクラスでメソッドを定義します。
public abstract String job();
メソッドを定義しますが、内容は書かずにおきます。
ではManagerクラス側で抽象メソッドを継承して処理を書きます。
public override String job(){
return 'Manager';
}
メソッドの修飾子にoverrideをつけて継承メソッドであることを定義します。
では先ほどと同じようにコードを実行してみます。
Manager manager1 = new Manager('Anderson',9);
Manager manager2 = new Manager('Brooks',5);
Manager manager3 = new Manager('Andy',4);
system.debug(manager3.job());

Managerが返されていますね。
今回はかなり簡単な内容にしましたが、継承をうまく使って
綺麗な設計を心がけていきたいですね。