目次
クラスの継承の問題01
次のプログラムのSubClassクラスが継承しているBaseClassの説明として正しいものは?
public class SubClass extends BaseClass {
SubClass(){
message = "Hello";
}
void greet(){
System.out.println("SubClass Message: " + message);
}
}
- A.)BaseClassクラスには、フィールドを初期化するコンストラクタを定義しなければならない
- B.)BaseClassクラスには、メッセージを表示するためのメソッドを定義しなければならない
- C.)BaseClassクラスには、greetフィールドを定義しなければならない
- D.)BaseClassクラスには、messageフィールドを定義しなければならない
正解は、、、
D.)BaseClassクラスには、messageフィールドを定義しなければならない
SubClassクラスではmessageという変数を使用していますが、SubClassクラスでは定義されていません。そのため、BaseClassクラスでmessageフィールドが定義されていなければコンパイルエラーが発生します。
クラスの継承についてはこちらの記事でも解説しています。
Java基礎 第12回『継承の役割と重要性について理解しよう』 Java基礎 第11回ではカプセル化のことを学んでいきました。本記事では、オブジェクト指向プログラミングの主要な概念である「継承」について詳しく解説します。「継承」…
継承される要素やアクセスに関する問題 2
継承の説明として正しいものは?
- A.)アクセス修飾子がデフォルトのままのフィールドは、すべてのサブクラスのメソッドからアクセスできる
- B.)アクセス修飾子がprivateなメソッドはサブクラスからであっても利用できない
- C.)スーパークラスのコンストラクタは同じパッケージに属するサブクラスにのみ引き継がれる
- D.)アクセス修飾子がprotectedなメソッドには、同じパッケージに属するサブクラスのみアクセスできる
正解は、、、
B.)アクセス修飾子がprivateなメソッドはサブクラスからであっても利用できない
サブクラスはスーパークラスの特徴を引き継ぎますが、privateなフィールドやメソッド、コンストラクタの二点は引き継げません。
アクセス修飾子がprivateなフィールドやメソッドは同じクラスのインスタンス同士でしか使えません。コンストラクタは、その定義がされているインスタンスの準備をするためのものです。
アクセス修飾子についてはこちらのページでも解説しています。
Java基礎 第8回『メソッド』 ~6章 メソッドのアクセス修飾子~ Java基礎 第8回の6章は、初学者の方からjavaを触れた時からの疑問だったであろう「アクセス修飾子」についてそれぞれの特性と具体的なコード例を交えて詳細に解説してい…
いかがだったでしょうか?クラスを継承した際に引き継がれる要素や、どの要素にアクセスできるかはクラスの継承を理解する基礎になる部分なので、しっかり覚えておきましょう。
他のページが気になる方は、下記のリンク集から、お好きなページへ飛んでください。
(Visited 189 times, 1 visits today)
コメント