Tips

Java Silver 練習問題23

Java Silver 練習問題23

Java Silverに関する問題を出題していきます!

 

問題1
次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] abstract class Abs {
void show(String str);
}
public class Sample extends Abs {
public static void main(String[] args) {
new Sample().show("hello");
}
@Override
void show(String str) {
System.out.println(str);
}
}
[/java]
  1. 「hello」と表示
  2. 何も表示されない
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 3:コンパイルエラー】

2行目でコンパイルエラーになります。
処理のない抽象メソッドを定義しようとしていますが、abstractの記述がありません。

 

 

問題2

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] abstract class Abs {
abstract void show(String str);
void hello() {
System.out.println("hello");
}
}
public class Sample extends Abs {
public static void main(String[] args) {
new Sample().hello();
}
}
[/java]
  1. 「hello」と表示
  2. 何も表示されない
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 3:コンパイルエラー】
またまたコンパイルエラーです。
抽象クラスで定義されている抽象メソッドは、サブクラスで必ずオーバライドしなければなりません。

 

 

問題3

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] abstract class Abs {
static abstract void hello();
}
class Sub extends Abs {
@Override
static void hello() {
System.out.println("hello");
}
}
public class Sample {
public static void main(String[] args) {
Sub.hello();
}
}
[/java]
  1. 「hello」と表示
  2. 何も表示されない
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 3:コンパイルエラー】
staticの抽象メソッドを定義することはできません。

 

 

問題4

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] abstract class Abs {
static void hello() {
System.out.println("hello");
}
}
public class Sample {
public static void main(String[] args) {
Abs.hello();
}
}
[/java]
  1. 「hello」と表示
  2. 何も表示されない
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 1:「hello」と表示】
抽象クラスに通常のstaticメソッドを定義することは可能です。

 

 

問題5

次のプログラムをコンパイル、実行した結果として正しいものはどれか。

[java] abstract class Abs {
String message = "hello";
abstract public String getMessage();
}

class AbsSub extends Abs {
@Override
String getMessage() {
return message;
}
}

public class Sample {
public static void main(String[] args) {
AbsSub sub = new AbsSub();
sub.getMessage();
}
}
[/java]

  1. 「hello」と表示
  2. 何も表示されない
  3. コンパイルエラー
  4. 実行時エラー
  5. 1~4以外
解答はここをクリック!

【解答 3:コンパイルエラー】
AbsSubクラスでgetMessageメソッドをオーバーライドしていますが、ここでコンパイルエラーが出ます。
理由はアクセス修飾子です。
オーバーライドする際、スーパークラスよりアクセス制限を強くすることはできません。
今回、スーパークラスでは「public」、サブクラスでは「デフォルト」となっているのでコンパイルエラーとなります。


前回の問題   次の問題

新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search