練習問題

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
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を作成しなさい。

ソースコード

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

➢ Books.java ※スーパークラス
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メソッドを利用して表示する。


NEXT>> 1.8 練習問題 解答