Salesforce Apexと抽象クラス(abstract)のサンプル
Salesforce Apex
概要
abstractメソッド
特徴
abstractメソッドは、実装(具体的なコードブロック)を持ちません。
abstractメソッドは、abstractクラス内でのみ定義することができます。
制約
abstractクラスを継承するサブクラスは、そのabstractメソッドを必ず実装しなければなりません。
クラスの概要
CftEmployee.cls (継承元クラス)
CftManager.cls (CftEmployeeクラスを継承するサブクラス)
CftPartTime.cls (CftEmployeeクラスを継承するサブクラス)
CftMain.cls (実行クラス)
サンプルコード
1.抽象クラスの定義
public abstract with sharing class CftEmployee {
/**
* コンストラクタ
*/
public CftEmployee() {
}
private String name;
// 名前のゲッタ
public String getName() {
return name;
}
// 名前のセッタ
public void setName(String name) {
this.name = name;
}
// 表示メソッド
public abstract void show();
}
public abstract with sharing class CftEmployee {
/**
* コンストラクタ
*/
public CftEmployee() {
}
private String name;
// 名前のゲッタ
public String getName() {
return name;
}
// 名前のセッタ
public void setName(String name) {
this.name = name;
}
// 表示メソッド
public abstract void show();
}
public abstract with sharing class CftEmployee { /** * コンストラクタ */ public CftEmployee() { } private String name; // 名前のゲッタ public String getName() { return name; } // 名前のセッタ public void setName(String name) { this.name = name; } // 表示メソッド public abstract void show(); }
2.CftManagerクラスの定義
public with sharing class CftManager extends CftEmployee {
/**
* コンストラクタ
*/
public CftManager() {
}
// 表示メソッド
public override void show() {
System.debug('社員123');
}
}
public with sharing class CftManager extends CftEmployee {
/**
* コンストラクタ
*/
public CftManager() {
}
// 表示メソッド
public override void show() {
System.debug('社員123');
}
}
public with sharing class CftManager extends CftEmployee { /** * コンストラクタ */ public CftManager() { } // 表示メソッド public override void show() { System.debug('社員123'); } }
3.CftPartTimeクラスの定義
public with sharing class CftPartTime extends CftEmployee {
/**
* コンストラクタ
*/
public CftPartTime() {
}
// 表示メソッド
public override void show() {
System.debug('アルバイト');
}
}
public with sharing class CftPartTime extends CftEmployee {
/**
* コンストラクタ
*/
public CftPartTime() {
}
// 表示メソッド
public override void show() {
System.debug('アルバイト');
}
}
public with sharing class CftPartTime extends CftEmployee { /** * コンストラクタ */ public CftPartTime() { } // 表示メソッド public override void show() { System.debug('アルバイト'); } }
4.CftMain側クラスの定義
public with sharing class CftMain {
/**
* コンストラクタ
*/
public CftMain() {
CftEmployee empA;
CftEmployee empB;
// 1つ目は社員
empA = new CftManager();
// 2つ目はアルバイト
empB = new CftPartTime();
// 表示メソッドの実行
empA.show();
empB.show();
}
}
public with sharing class CftMain {
/**
* コンストラクタ
*/
public CftMain() {
CftEmployee empA;
CftEmployee empB;
// 1つ目は社員
empA = new CftManager();
// 2つ目はアルバイト
empB = new CftPartTime();
// 表示メソッドの実行
empA.show();
empB.show();
}
}
public with sharing class CftMain { /** * コンストラクタ */ public CftMain() { CftEmployee empA; CftEmployee empB; // 1つ目は社員 empA = new CftManager(); // 2つ目はアルバイト empB = new CftPartTime(); // 表示メソッドの実行 empA.show(); empB.show(); } }