初歩的な質問で申し訳ありませんがJavaのstatic(静的メソッド)について質問があります。
public class Main {
public static void main(String[] args) {
Object o1 = new Empty(); Object o2 = new Hero(); Object o3 = "こんにちは"; printAnything(o1); printAnything(o2); printAnything(o3); } public static void printAnything(Object o) { System.out.println(o.toString()); }
}
Object型の変数ならあらゆる参照型のインスタンスを入れられると学びこちらのコードを書きました。
ただこのprintAnythingメソッドですが、staticの部分をはずすと
【エラー: staticでないメソッド printAnything(Object)をstaticコンテキストから参照することはできません。printAnything(o1);】
とコンパイルエラーとなります。
ここで4点質問があります。
1.なぜstaticをはずすとこのようなエラーになるのでしょうか。
2.staticをつけないでコードを通すにはどのようにすればよいかも教えていただきたいです。
3.上記のコードは引数としてObject型を用いることであらゆる参照型のインスタンスを渡せるメソッドとのことですがこれをすることでどのようなメリットがあるのでしょうか。
4.なぜ上記のコードはクラス名.メソッド名();、インスタンス変数名.メソッド名();ではなくメソッド名();のみで問題なく動くのでしょうか。
初学者なのでなるべくわかりやすくご教授いただければ嬉しいです。
私の静的メソッドの知識は
1.メソッド自体がクラスに属するようになる。
2.インスタンスにメソッドの分身が準備される。
よって
クラス名.メソッド名();
インスタンス変数名.メソッド名();
で静的メソッドの呼び出しができる。
3.インスタンスを一つも生み出すことなく呼び出せる。
ということは教科書を通して学びました。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/20 04:34