简而言之,静态方法和静态变量是类级别,而实例方法和实例变量是实例或对象级别。
这意味着无论何时创建实例或对象(使用 new ClassName()),该对象都将保留其自己的实例变量副本。如果您有五个相同类的不同对象,您将有五个不同的实例变量副本。但是所有这五个对象的静态变量和方法都是相同的。如果您需要创建的每个对象都使用一些通用的东西,请将其设为静态。如果您需要一种不需要特定于对象的数据来工作的方法,请将其设为静态。静态方法仅适用于静态变量或将根据传递的参数返回数据。
class A {
int a;
int b;
public void setParameters(int a, int b){
this.a = a;
this.b = b;
}
public int add(){
return this.a + this.b;
}
public static returnSum(int s1, int s2){
return (s1 + s2);
}
}
在上面的示例中,当您将 add() 调用为:
A objA = new A();
objA.setParameters(1,2); //since it is instance method, call it using object
objA.add(); // returns 3
B objB = new B();
objB.setParameters(3,2);
objB.add(); // returns 5
//calling static method
// since it is a class level method, you can call it using class itself
A.returnSum(4,6); //returns 10
class B{
int s=8;
int t = 8;
public addition(int s,int t){
A.returnSum(s,t);//returns 16
}
}
在第一类中, add() 将返回特定对象传递的数据总和。但是静态方法可用于从任何不独立的类(如果有任何特定实例或对象)中获取总和。因此,对于只需要参数才能工作的泛型方法,可以将其设为静态以使其保持干燥。