【Salesforce認定プラットフォームデベロッパー】試験対策:第20問

問題

開発者は、既存のPaymentクラスの実装を提供するCreditcardPaymentクラスを作成する必要があります。
Paymentクラスは以下のように定義されています。

public abstract class Payment{
  public abstract void make Payment(Decimalamount);
}

次の中から、CreditcardPaymentクラスを正しく実装する選択肢を選んでください。

A.public class CreditCardPayment extends Payment{
  public override void makePayment(Decimalamount) {
    /*実装*/
  }
}

B.public class CreditCardPayment extends Payment{
  public void makePayment(Decimalamount) {
    /*実装*/
  }
}

C.public class CreditCardPayment implements Payment{
  public override void makePayment(Decimalamount){
    /*実装*/
  }
}

D.public class CreditCardPayment implements Payment{
  public void makePayment(Decimalamount){
    /*実装*/
  }
}

正解

A.public class CreditCardPayment extends Payment{
  public override void makePayment(Decimalamount) {
    /*実装*/
  }
}

B.public class CreditCardPayment extends Payment{
  public void makePayment(Decimalamount) {
    /*実装*/
  }
}

C.public class CreditCardPayment implements Payment{
  public override void makePayment(Decimalamount){
    /*実装*/
  }
}

D.public class CreditCardPayment implements Payment{
  public void makePayment(Decimalamount){
    /*実装*/
  }
}

解説

A. 正解 - CreditCardPaymentクラスはPaymentクラスを正しく継承し、抽象メソッドmakePaymentをオーバーライドしています。これにより、具体的な実装を提供しています。

B. 不正解 - メソッドはオーバーライドされていますが、overrideキーワードが欠けているため、正しくオーバーライドされているとは見なされません。

C. 不正解 - Paymentは抽象クラスであり、インターフェースとして実装することはできないため不適切です。

D. 不正解 - 同様に、Paymentをインターフェースとして実装する形式になっており、正しくはありません。

ポイント

CreditCardPaymentクラスは、Paymentクラスという「親クラス」から正しく引き継いで(継承して)、makePayment という方法(メソッド)をちゃんと上書き(オーバーライド)しています。

他の選択肢は、この引き継ぎ方や上書きのやり方が間違っているので、正解ではありません。

イメージ:親クラスは「基本ルール」、子クラスはそのルールをちょっと変えたり追加したりできるもの。この問題では、CreditCardPaymentがルールを守りつつ正しく工夫しています!

おすすめの記事