宿題について次の質問があります。
foo()
クラスで定義されたメソッドにQuiz
は、次のシグネチャがあります:public static double foo(double f)
. あなたは何について言うことができますfoo()
か?
クラスメソッドです
インスタンス変数です
インスタンスメソッドです
クラス属性です
foo()
クラスで宣言されているため、クラスメソッドだと思います。答えは私が思うほど簡単ですか?
宿題について次の質問があります。
foo()
クラスで定義されたメソッドにQuiz
は、次のシグネチャがあります:public static double foo(double f)
. あなたは何について言うことができますfoo()
か?
クラスメソッドです
インスタンス変数です
インスタンスメソッドです
クラス属性です
foo()
クラスで宣言されているため、クラスメソッドだと思います。答えは私が思うほど簡単ですか?
答えは、そのclass method
で宣言されたフィールドまたはメソッドは、static
常にそれぞれクラスの属性または動作です。
Non-static
変数はオブジェクトごとに 1 つstatic variables
ですが、クラスごとに 1 つです。
static
メソッドは、変数またはメソッドにアクセスできません。Non-static
static
メソッドと変数はClass_Name
with "."
(ドット) 演算子を使用して呼び出すことができます。
ただし、ない場合( Math クラスにはプライベート コンストラクターがあります)、クラスのインスタンスを作成して静的メソッドまたは変数を呼び出すこともできますが、それは合法的な方法ではありません。class
private constructor
また、それらが存在する のnull 参照を使用して呼び出す ことができることも覚えておく必要があります.... はい、動作します....static methods or variables
class
さて、あなたはそこまでの道のりです...
Javaにはインスタンスメソッドとクラスメソッドがあります
インスタンス メソッドは、クラスのインスタンスに関連付けられているメソッドです。
class InstanceTest {
public void instanceMethod() { }
}
(...)
InstanceTest it = new InstanceTest();
it.instanceMethod();
このメソッドを呼び出すには、このクラスをインスタンス化して呼び出す必要があります。
Class メソッド - static修飾子で識別されたものは、クラスで直接呼び出すことができます。
class ClassTest {
public static void instanceMethod() { }
}
(...)
ClassTest.classMethod();
その「ルール」は変数でも同じです。インスタンス変数とクラス変数を使用できます。
インスタンスとクラス メンバーの詳細については、こちらをご覧ください。
これはクラスメソッドですが、クラスで宣言されているためではなく、そうであるためstatic
、定義されているクラスのオブジェクトのインスタンス変数を使用しません.
キーワードを使用しているため、これはクラスメソッドですstatic
。つまり、それを呼び出すためにクラスのインスタンスは必要ありません。
あなたはそれを次のように呼びます:
Quiz.foo(2.5);
反対に、インスタンス メソッド (static
キーワードなし) の場合は、メソッドを呼び出す前にインスタンス化する必要があります。
Quiz q = new Quiz();
q.foo(2.5);
静的メソッドなのでクラスメソッドです。オブジェクト(インスタンス)ではなく、クラスに属します。
静的メソッドは、静的変数のみにアクセスできます。その理由は明らかです。クラスに共通するものは、オブジェクトに固有のものを参照できません。