[解決済み] 静的メソッドと非静的メソッドの違いは何ですか?
2022-03-01 08:03:17
質問
以下のコードスニペットをご覧ください。
コード1
public class A {
static int add(int i, int j) {
return(i + j);
}
}
public class B extends A {
public static void main(String args[]) {
short s = 9;
System.out.println(add(s, 6));
}
}
コード 2
public class A {
int add(int i, int j) {
return(i + j);
}
}
public class B extends A {
public static void main(String args[]) {
A a = new A();
short s = 9;
System.out.println(a.add(s, 6));
}
}
これらのコード・スニペットの違いは何でしょうか?どちらも出力は
15
を答えとします。
どのように解決するのですか?
静的メソッドはクラス自体に属し、非静的(別名インスタンス)メソッドはそのクラスから生成される各オブジェクトに属します。もし、メソッドがそのクラスの個々の特性に依存しないことを行うのであれば、staticにします(その方がプログラムのフットプリントが小さくなります)。そうでなければ、非静的であるべきです。
例
class Foo {
int i;
public Foo(int i) {
this.i = i;
}
public static String method1() {
return "An example string that doesn't depend on i (an instance variable)";
}
public int method2() {
return this.i + 1; // Depends on i
}
}
このように静的なメソッドを呼び出すことができます。
Foo.method1()
. それをmethod2で試すと失敗します。しかし、これならうまくいく。
Foo bar = new Foo(1); bar.method2();
関連
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み] JDKとJREの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません