Java 静态方法和非静态方法有什么区别?
请参见下面的代码段:
代码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作为答案输出。
回答:
静态方法属于类本身,而非静态(aka实例)方法属于从该类生成的每个对象。如果你的方法执行的操作不依赖于其类的单个特征,请将其设置为静态(这将使程序的占用空间减小)。否则,它应该是非静态的。
例:
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()
;
以上是 Java 静态方法和非静态方法有什么区别? 的全部内容, 来源链接: utcz.com/qa/432313.html