Tips

Java Silver 練習問題20

Java Silver 練習問題20

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

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

[java] public class Sample {
public static void main(String[] args) {
Dog dog = new Dog("ポチ");
System.out.println(dog.name);
}
}

class Dog {
String name;

public Dog(String name) {
name = name;
}
}
[/java]

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

【解答 5:1~4以外】

「null」と表示されます。
12行目でname = nameとしていますが、これでは引数をインスタンス変数に代入することはできません。
インスタンス変数に代入するためにはthis.name = nameとする必要があります。

 

 

問題2

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

[java] public class Sample {
public static void main(String[] args) {
Dog dog1 = new Dog(3);
Dog dog2 = new Dog(5);
System.out.println(dog1.age);
}
}

class Dog {
static int age;

public Dog(int age) {
this.age = age;
}
}
[/java]

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

【解答 2:「5」と表示】
ageはstatic変数です。そのため各オブジェクトで共有する値となります。
そのため3の値が代入されたあと5で上書きされてしまったため、表示は「5」となります。

 

 

問題3

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

[java] public class Sample {
public static void main(String[] args) {
Cat tama = new Cat("タマ");
System.out.println(tama.name);
}
}

class Cat {
private String name;

public Cat(String name) {
this.name = name;
}
}
[/java]

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

【解答 4:コンパイルエラー】
nameがprivateで宣言されているためエラーになります。
private修飾子が付いた変数やメソッドは同一クラス内からしか呼び出すことができません。

 

 

問題4

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

[java] public class Sample {
public static void main(String[] args) {
Cat tama = new Cat("タマ");
System.out.println(tama.getName());
}
}

class Cat {
private String name;

public Cat(String name) {
this.name = name;
}

public String getName() {
return name;
}
}
[/java]

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

【解答 1:「タマ」と表示】
こちらはエラーが出ません。
4行目で呼び出しているのはメソッドで、直接nameにアクセスしているわけではありません。
クラス内のフィールドは基本的にprivateで宣言し、別クラスからアクセスする場合はメソッド経由にします。

 

 

問題5

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

[java] public class Sample {
public static void main(String[] args) {
Cat tama = new Cat("タマ");
System.out.println(tama.getName());
}
}

class Cat {
private String name;

private Cat(String name) {
this.name = name;
}

public String getName() {
return name;
}
}
[/java]

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

【解答 3:3行目でコンパイルエラー】
コンストラクタがprivateで宣言されています。
すると別クラスからコンストラクタが呼び出せない、つまりインスタンス化ができなくなっていまいます。


前回の問題   次の問題

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

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search