直接アクセスとは、フィールドが属するクラスのインスタンスを使用せずにインスタンス変数にアクセスできないのはなぜですか? できれば記憶の範囲でお答えください。
質問する
82 次
4 に答える
4
非静的フィールドは各インスタンスにあり、他のどこにもありません。
静的メソッドでは、インスタンスへのデフォルトの参照がないため、どのインスタンスを念頭に置いているかをメソッドが知る方法はありません。
問題はアドレスやメモリの問題ではなく、ロジックの問題です。
「道に迷ったのではなく、自分がどこにいるのかわからないだけです。地図を使って説明してください」と言っているようなものです。
于 2013-05-11T21:54:27.210 に答える
3
たとえば、次のプログラムを見てください。
public class Test {
public static void main(String[] args) {
double d = Math.random();
System.out.println(d);
}
}
クラス Math のインスタンスを作成しなくても、Math.random()を呼び出すことができることは明らかです。random() は静的メソッドです。つまり、クラスのインスタンスにバインドされず、インスタンスなしで使用できます。その結果、どのインスタンスを使用する必要があるため、Math のインスタンスの変数にアクセスできません。何百もあるかもしれませんし、まったくないかもしれません。
同じことが静的内部クラスにも当てはまります。それらは外部クラスのインスタンスにバインドされず、独立して作成および使用できます。
于 2013-05-11T22:02:37.140 に答える
0
また、名前空間を明確に保つことも目的です。それらが静的であっても、プログラムがメソッド/クラスにアクセスしようとすると、コンパイル エラーが発生します。
于 2013-05-11T21:49:50.370 に答える