練習問題

1.7 練習問題

 本章で習った内容を元に練習問題を解いて下さい。

問1 次の設問①~⑤について○か×で答えなさい。

設問
① スーパークラスからは1つしかサブクラスを作成できない。
② 2つ以上スーパークラスを継承したサブクラスを作成できる。
③ サブクラスはスーパークラスのメンバを全て継承して利用することができる。
④ サブクラス内でスーパークラスと同じ定義のメソッドを記述することはできない。
⑤ final修飾子を利用するとクラスの継承を禁止できる。

問2 以下のクラスについて説明をした設問について○か×で答えなさい。

設問
① クラスXがクラスYのスーパークラスになる。
② クラスYにsというフィールド変数があるとコンパイルエラーになる。
③ クラスYに引数ありのコンストラクタが定義されている必要がある。
④ クラスYのフィールドzのアクセス修飾子はprivate以外である必要がある。
⑤ クラスYにmというメソッドが定義されていなくてもよい。

問3 以下に示すソースコードPractice1101.javaを実行した時の、結果①~⑧に入る文字を答えなさい。

ソースコード

① ソース・フォルダー      :myproj_basic/src
② パッケージ          :jp.co.f1.basic.ch11exercise
③ 名前             :Practice1101
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる

➢ Practice1101.java
1package jp.co.f1.basic.ch11exercise;
2 
3class SampleA{
4    public SampleA() {
5        System.out.println("[クラスSampleA]の引数[なし]のコンストラクタ");
6    }
7    public SampleA(int a) {
8        System.out.println("[クラスSampleA]の引数[あり]のコンストラクタ");
9    }
10}
11class SampleB extends SampleA{
12    public SampleB() {
13        super(1);
14        System.out.println("[クラスSampleB]の引数[なし]のコンストラクタ");
15    }
16    public SampleB(int b) {
17        super();
18        System.out.println("[クラスSampleB]の引数[あり]のコンストラクタ");
19    }
20}
21public class Practice1101 {
22    public static void main(String[] args) {
23        SampleB sb1 = new SampleB();
24        SampleB sb2 = new SampleB(1);
25    }
26}

実行結果

問4 以下に示すBooks.javaを拡張して以下の仕様をもつ、TextBooks1.javaを作成しなさい。

ソースコード

① ソース・フォルダー      :myproj_basic/src
② パッケージ          :jp.co.f1.basic.ch11exercise
③ 名前             :TextBooks1
④ 作成するメソッド・スタブの選択:チェックは不要です。

➢ Books.java ※スーパークラス
1package jp.co.f1.basic.ch11exercise;
2 
3public class Books {
4    private String title; //タイトル
5    private int price; //価格
6 
7    public Books(){
8        this.title = null;
9        this.price = 0;
10        System.out.println("本を作成しました。");
11    }
12    public void setBook(String title,int price){
13        this.title = title;
14        this.price = price;
15        System.out.println("この本のタイトルは" + title + "価格は" + this.price + "にしました。");
16    }
17    public void showBook(){
18        System.out.println("この本のタイトルは" + this.title + "価格は" + this.price + "です。");
19    }
20 }

作成仕様
➢ 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メソッドを利用して表示する。


NEXT>> 1.8 練習問題 解答

f