Salesforce Apexと抽象クラス(abstract)のサンプル

Salesforce Apex

概要
abstractメソッド
特徴
abstractメソッドは、実装(具体的なコードブロック)を持ちません。
abstractメソッドは、abstractクラス内でのみ定義することができます。
制約
abstractクラスを継承するサブクラスは、そのabstractメソッドを必ず実装しなければなりません。

クラスの概要
CftEmployee.cls (継承元クラス)
CftManager.cls (CftEmployeeクラスを継承するサブクラス)
CftPartTime.cls (CftEmployeeクラスを継承するサブクラス)
CftMain.cls (実行クラス)

サンプルコード
1.抽象クラスの定義

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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クラスの定義

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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クラスの定義

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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側クラスの定義

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

 

IT

Posted by arkgame