問題
次のコードでコンパイルエラーになるのは(1)から(5)のどの箇所ですか。
public class Main {
public static void main(String... args) {
Item item = new Item();
item.display(200);
}
}
class Item {
static int price; // (1)
public static void display() {
price = 100; // (2)
System.out.println(this.price); // (3)
}
public void display(int price) {
this.price += price; // (4)
display(); // (5)
}
}
選択肢
A)(1)
B)(2)
C)(3)
D)(4)
E)(5)
解答
A)(1)
B)(2)
C)(3)
D)(4)
E)(5)
解説
public class Main {
public static void main(String... args) {
Item item = new Item(); //1. インスタンス化
item.display(200); //2.
}
}
class Item {
static int price; // (1) //static付与
public static void display() { //6.
price = 100; // (2)
System.out.println(this.price); // (3) 7.staticメンバ変数にはthisを使用で着ないため、コンパイルエラー
//thisを省くと100が表示されます
}
public void display(int price) { //3. 200を受け取る
this.price += price; // (4). 4.staticメンバ変数にはthisを使用できないため、priceは使用されいない事になる
display(); // (5) 5.
}
}
対象資格:Java SE17 認定資格