20‐1
(1) インターフェースで宣言したフィールドは自動的にある修飾子が付加されたとみなされます。その修飾子を3つ答えなさい。
(2) インターフェースで定義したメソッドは自動的にある修飾子が付加されたとみなされます。その修飾子を2つ答えなさい。
20‐2
電話の抽象的な側面をモデルとする、次のようなPhone01というインターフェースを作成しなさい。
・電話を掛けるためのvoid型で引数無しのcall()というメソッドをもつ。
・電話を受けるためのvoid型で引数無しのtake()というメソッドをもつ。
20‐3
Phone01を実装し、電話の具体的な側面をモデルとする、次のようなPhone01TypeAというクラスを作成しなさい。
・電話番号を表すString型のnumberというフィールドをもつ。
・コンストラクタの引数で電話番号を指定させる。ただし、コンストラクタの引数の名前はフィールド名と同じにする。
・call()はTypeAと電話番号と電話を掛けているという旨の内容を出力するようにしなさい。
・take()はTypeAと電話番号と電話を受けているという旨の内容を出力するようにしなさい。
20‐4
Phone01を実装し、電話の具体的な側面をモデルとする、次のようなPhone01TypeBというクラスを作成しなさい。
・電話番号を表すString型のnumberというフィールドをもつ。
・コンストラクタの引数で電話番号を指定させる。ただし、コンストラクタの引数の名前はフィールド名と同じにする。
・call()はTypeBと電話番号と電話を掛けているという旨の内容を出力するようにしなさい。
・take()はTypeBと電話番号と電話を受けているという旨の内容を出力するようにしなさい。
20‐5
カメラの抽象的な側面をモデルとする、次のようなCamera01というインターフェースを作成しなさい。
・写真を撮るためのsnap()というメソッドをもつ。snap()はvoid型で、画素数を表すint型の引数を1つもつ。
20‐6
Camera01を実装し、カメラの具体的な側面をモデルとする、次のようなCamera01TypeCというクラスを作成しなさい。
・snap()はTypeCと画素数と写真を撮っているという旨の内容を出力するようにしなさい。
20‐7
Camera01を実装し、カメラの具体的な側面をモデルとする、次のようなCamera01TypeDというクラスを作成しなさい。
・snap()はTypeDと画素数と写真を撮っているという旨の内容を出力するようにしなさい。
20‐8
Phone01とCamera01を実装し、カメラ付き携帯電話の具体的な側面をモデルとする、次のようなMobile01TypeEというクラスを作成しなさい。
・電話番号を表すString型のnumberというフィールドをもつ。
・コンストラクタの引数で電話番号を指定させる。ただし、コンストラクタの引数の名前はフィールド名と同じにする。
・call()はTypeEと電話番号と電話を掛けているという旨の内容を出力するようにしなさい。
・take()はTypeEと電話番号と電話を受けているという旨の内容を出力するようにしなさい。
・snap()はTypeEと画素数と写真を撮っているという旨の内容を出力するようにしなさい。
20‐9
Phone01とCamera01を実装し、カメラ付き携帯電話の具体的な側面をモデルとする、次のようなMobile01TypeFというクラスを作成しなさい。
・電話番号を表すString型のnumberというフィールドをもつ。
・コンストラクタの引数で電話番号を指定させる。ただし、コンストラクタの引数の名前はフィールド名と同じにする。
・call()はTypeFと電話番号と電話を掛けているという旨の内容を出力するようにしなさい。
・take()はTypeFと電話番号と電話を受けているという旨の内容を出力するようにしなさい。
・snap()はTypeFと画素数と写真を撮っているという旨の内容を出力するようにしなさい。
20‐10
次のような処理を行うExer20_10というクラスを作成・コンパイル・実行し、結果を確認しなさい。
・電話の機能をもっている(Phone01を実装している)すべてのクラスのテストを次の手順で行います。
・配列初期化子を使用して、Phone01の配列にPhone01TypeA、Phone01TypeA、Mobile01TypeE、Mobile01TypeFのインスタンスを適当な電話番号を指定して生成し、代入する。
・配列の全ての要素に対して順番にcall()とtake()メソッドを呼び出す。
・カメラの機能をもっている(Camera01を実装している)すべてのクラスのテストを次の手順で行います。
・配列初期化子を使用して、Camera01の配列にCamera01TypeC、Camera01TypeD、Mobile01TypeE、Mobile01TypeFのインスタンスを生成し、代入する。(電話番号が必要な場合は適当に指定すること。)
・配列の全ての要素に対して順番にsnap()メソッドを呼び出す。画素数は500万画素から100万ずつ増やしていくこと。
20‐11
次のクラスをコンパイル・実行するとどのようになりますか?
------------------------------------------------------------------------
interface Inter01 {
void met01();
}
interface Inter02 {
void met02();
}
class Class01 implements Inter01, Inter02 {
public void met01(){
System.out.println("met01!!");
}
}
class Exer20_11 {
public static void main(String[] args){
Inter01 i1 = new Class01();
i1.met01();
}
}
------------------------------------------------------------------------
20‐12
次のクラスをコンパイル・実行するとどのようになりますか?
------------------------------------------------------------------------
interface Inter01 {
void met01();
}
interface Inter02 {
void met02();
}
class Class01 implements Inter01, Inter02 {
void met01(){
System.out.println("met01!!");
}
void met02(){
System.out.println("met02!!");
}
}
class Exer20_12 {
public static void main(String[] args){
Inter01 i1 = new Class01();
i1.met01();
}
}
------------------------------------------------------------------------
20‐13
次のクラスをコンパイル・実行するとどのようになりますか?
------------------------------------------------------------------------
interface Inter01 {
void met01();
}
interface Inter02 {
void met02();
}
class Class01 implements Inter01, Inter02 {
public void met01(){
System.out.println("met01!!");
}
public void met02(){
System.out.println("met02!!");
}
}
class Exer20_13 {
public static void main(String[] args){
Inter01 i1 = new Class01();
i1.met01();
}
}
------------------------------------------------------------------------
20‐14
次のクラスをコンパイル・実行するとどのようになりますか?
------------------------------------------------------------------------
interface Inter01 {
void met01();
}
interface Inter02 {
void met02();
}
class Class01 implements Inter01, Inter02 {
public void met01(){
System.out.println("met01!!");
}
public void met02(){
System.out.println("met02!!");
}
}
class Exer20_14 {
public static void main(String[] args){
Inter01 i1 = new Class01();
i1.met02();
}
}
------------------------------------------------------------------------
20‐15
次のクラスをコンパイル・実行するとどのようになりますか?
Basicでやってない内容も一部含まれます(キャストの部分)が、予想してみて下さい。
------------------------------------------------------------------------
interface Inter01 {
void met01();
}
interface Inter02 {
void met02();
}
class Class01 implements Inter01, Inter02 {
public void met01(){
System.out.println("met01!!");
}
public void met02(){
System.out.println("met02!!");
}
}
class Exer20_15 {
public static void main(String[] args){
Inter01 i1 = new Class01();
Inter02 i2 = (Inter02)i1;
i2.met02();
}
}
------------------------------------------------------------------------
20‐16
次のクラスをコンパイル・実行するとどのようになりますか?
Basicでやってない内容も一部含まれます(キャストの部分)が、予想してみて下さい。
------------------------------------------------------------------------
interface Inter01 {
void met01();
}
interface Inter02 {
void met02();
}
class Class01 implements Inter01 {
public void met01(){
System.out.println("met01!!");
}
public void met02(){
System.out.println("met02!!");
}
}
class Exer20_16 {
public static void main(String[] args){
Inter01 i1 = new Class01();
Inter02 i2 = (Inter02)i1;
i2.met02();
}
}
------------------------------------------------------------------------