練習問題
1.7 練習問題
本章で習った内容を元に練習問題を解いて下さい。
問1 次の設問①~⑤について○か×で答えなさい。
設問
① スーパークラスからは1つしかサブクラスを作成できない。
② 2つ以上スーパークラスを継承したサブクラスを作成できる。
③ サブクラスはスーパークラスのメンバを全て継承して利用することができる。
④ サブクラス内でスーパークラスと同じ定義のメソッドを記述することはできない。
⑤ final修飾子を利用するとクラスの継承を禁止できる。
問2 以下のクラスについて説明をした設問について○か×で答えなさい。
設問
① クラスXがクラスYのスーパークラスになる。
② クラスYにsというフィールド変数があるとコンパイルエラーになる。
③ クラスYに引数ありのコンストラクタが定義されている必要がある。
④ クラスYのフィールドzのアクセス修飾子はprivate以外である必要がある。
⑤ クラスYにmというメソッドが定義されていなくてもよい。
問3 以下に示すソースコードPractice1101.javaを実行した時の、結果①~⑧に入る文字を答えなさい。
ソースコード
➢ Practice1101.java① ソース・フォルダー :myproj_basic/src
② パッケージ :jp.co.f1.basic.ch11exercise
③ 名前 :Practice1101
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる
package jp.co.f1.basic.ch11exercise; class SampleA{ public SampleA() { System.out.println("[クラスSampleA]の引数[なし]のコンストラクタ"); } public SampleA(int a) { System.out.println("[クラスSampleA]の引数[あり]のコンストラクタ"); } } class SampleB extends SampleA{ public SampleB() { super(1); System.out.println("[クラスSampleB]の引数[なし]のコンストラクタ"); } public SampleB(int b) { super(); System.out.println("[クラスSampleB]の引数[あり]のコンストラクタ"); } } public class Practice1101 { public static void main(String[] args) { SampleB sb1 = new SampleB(); SampleB sb2 = new SampleB(1); } }
実行結果
問4 以下に示すBooks.javaを拡張して以下の仕様をもつ、TextBooks1.javaを作成しなさい。
ソースコード
➢ Books.java ※スーパークラス① ソース・フォルダー :myproj_basic/src
② パッケージ :jp.co.f1.basic.ch11exercise
③ 名前 :TextBooks1
④ 作成するメソッド・スタブの選択:チェックは不要です。
package jp.co.f1.basic.ch11exercise; public class Books { private String title; //タイトル private int price; //価格 public Books(){ this.title = null; this.price = 0; System.out.println("本を作成しました。"); } public void setBook(String title,int price){ this.title = title; this.price = price; System.out.println("この本のタイトルは" + title + "価格は" + this.price + "にしました。"); } public void showBook(){ System.out.println("この本のタイトルは" + this.title + "価格は" + this.price + "です。"); } }
作成仕様
➢ TextBooks1.java ※サブクラス
・Booksクラスを拡張する。
・メンバは以下の3つを持つ。
①フィールド
変数名: private String subject(教科の情報を管理する変数)
②メソッド
メソッド名: getSubject
アクセス修飾子: public
引数: なし
戻り値: String フィールド変数subject
概要: フィールド変数subjectの値を戻り値として返す。
メソッド名: setSubject
アクセス修飾子: public
引数: String subject //教科情報
戻り値: なし
概要: 引数で受け取った教科情報をフィールド変数subjectに設定する。
「この本の教科をXXXXにしました。」と画面に出力処理を行う。
※XXXXは引数の値
問5 問4で作成したTextBooks1クラスを拡張して以下の仕様をもつ、TextBooks2.javaを作成しなさい。
ソースコード
① ソース・フォルダー :myproj_basic/src
② パッケージ :jp.co.f1.basic.ch11exercise
③ 名前 :TextBooks2
④ 作成するメソッド・スタブの選択:チェックは不要です。
作成仕様
➢ TextBooks2.java ※サブクラス
・TextBooks1クラスを拡張する。
・メンバは以下の1つを持つ。
①メソッド
メソッド名: showBook
アクセス修飾子: public
引数: なし
戻り値: なし
概要: ※スーパークラスのメソッドをオーバーライドしています。
スーパークラスのshowBookを呼び出す。
「この本の教科はXXXXです。」と画面に出力処理を行う。
※XXXXはスーパークラスのgetSubjectメソッドを利用して表示する。