[解決済み】クラスで「static」キーワードは何をするのですか?
2022-03-24 19:15:24
質問
具体的には、このようなコードを試していました。
package hello;
public class Hello {
Clock clock = new Clock();
public static void main(String args[]) {
clock.sayTime();
}
}
しかし、次のようなエラーが発生しました。
静的メソッドmainの非静的フィールドにアクセスできない
という宣言に変更しました。
clock
をこうしてください。
static Clock clock = new Clock();
そして、うまくいきました。このキーワードを宣言の前に置くのはどういう意味なのでしょうか?そのオブジェクトに対して何ができるかという点で、具体的に何をするのか、あるいは何を制限するのか?
どうすれば解決するの?
static
メンバは特定のインスタンスではなく、クラスに属しています。
という意味です。
のインスタンスは1つだけです。
static
フィールドが存在する
[1]
そのクラスのインスタンスを100万個作っても、1個も作らなくても。すべてのインスタンスで共有されます。
以来
static
メソッドも特定のインスタンスに属さないので、インスタンスのメンバを参照することはできません。与えられた例では
main
のどのインスタンスかわからない。
Hello
クラスのどのインスタンスか(したがって
Clock
クラス) を参照する必要があります。
static
メンバが参照できるのは
static
メンバになります。インスタンスのメンバはもちろん
static
のメンバーである。
余談ですが
もちろんです。
static
のメンバーはインスタンスメンバーにアクセスすることができます。
オブジェクトの参照を通じて
.
例
public class Example {
private static boolean staticField;
private boolean instanceField;
public static void main(String[] args) {
// a static method can access static fields
staticField = true;
// a static method can access instance fields through an object reference
Example instance = new Example();
instance.instanceField = true;
}
[1]: ランタイムの特性によっては、ClassLoaderやAppDomainやスレッドごとに1つになることもありますが、それはさておき。
関連
-
[解決済み] x--やx++はここで何をするのですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] Inversion of Controlとは?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] C言語における「static」の意味とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Javaで拡張子なしのファイル名を取得する方法は?
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] getContentPane()は具体的に何をするのですか?
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] アクティビティに割り当てられない
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] 素人考えですが、Javaの'static'の意味は何ですか?重複