問題
あなたは、User クラスに greet() というメソッドを定義しようとしています。
このメソッドでは、ユーザーの名前(name)を使って挨拶メッセージを出力したいと考えています。
しかし、うっかりこの greet() メソッドを static として定義してしまうと、name というインスタンス変数にアクセスできずエラーになることに気づきます。
この問題では、static メソッドと インスタンス変数の関係性を確認し、
エラーになる理由と正しい設計を体験してください。
出力のイメージ(正しく書けた場合)
Hello, Alice!
Hello, Bob!
要件
Userクラスを作成し、インスタンス変数nameを定義することgreet()メソッドでSystem.out.println("Hello, " + name + "!");を出力すること- 最初に
greet()を static で書き、コンパイルエラーになることを確認する - エラーの原因を理解し、staticを外して修正したバージョンを作成すること
テストコード(Main.java)
public class Main {
public static void main(String[] args) {
User u1 = new User("Alice");
User u2 = new User("Bob");
u1.greet();
u2.greet();
}
}
ヒント
- staticメソッドは インスタンスがなくても呼べるが、
インスタンス変数は インスタンスに属するため static からは見えない staticを外してメソッドをインスタンスメソッドにすればnameを使えるようになる
実習で理解を深めよう / Practice to deepen your understanding
この内容についてJavaDrillで実際に手を動かして学習できます
Practice with JavaDrill to learn hands-on


