Apex abstractクラスにprotected でメソッドを実装するサンプル
環境
Salesforce Apex
構文
[global | public | private | protected] /* アクセス範囲 */
[abstract] /* abstractかどうか */
[virtual] /* virtualかどうか */
[override] /* overrideかどうか */
[static] /* static かどうか */
data_type /* 型 */
method_name /* メソッド名 */
(input parameters) /* 引数 */
{
// 処理コード
}
アクセス範囲
global
すべての Apex クラスからアクセス可能
外部から呼び出すような method に使う
public
同じパッケージの Apex クラスからアクセス可能
protected
同じクラス、継承したクラスからアクセス可能
Javaの protected と同じだが、記述にクセがある
使用例
abstract なメソッドが protected で継承先が実装クラスの場合、
protected でメソッドを実装しようとしてもコンパイルエラーになります。
public abstract class AbstractBase { public void show() { xutest(); ctn(); } abstract protected void xutest(); protected void ctn() { System.debug('abstractbase::ctn'); } } public abstract class Concrete extends AbstractBase { // この定義だとエラーになる protected void xutest() { System.debug('jiaos::xutest11'); } // これだとエラーにならない public void xutest() { System.debug('jiaos:xutest22'); } }