当调用函数
testFunc()
,我没有使用语法Apples.testFunc()
. 但代码却能成功运行。为什么会这样?
class Apples {
public static void main(String args[] ) {
testFunc();
}
public static void testFunc() {
System.out.println("Hello world!");
}
}
由于,静态方法是在同一个类中。所以,你不需要指定类名。
如果它是在不同的类中,那么你需要指定类名。
请记住,非静态方法可以同时访问静态和静态方法。 非静态方法可以同时访问静态和非静态成员 而静态方法只能访问静态成员。
例如:
调用一个存在于不同类中的静态方法,你需要这样做。
import com.example.Test;
public class Apples {
public static void main(String args[]) {
Test.testFunc();
}
}
package com.example;
public class Test {
public static void testFunc() {
System.out.println("Hello world!");
}
}
你的函数testFunc()和函数main在同一个类中。所以你不需要在函数testFunc()前使用类名。
当类的内存被分配时,静态方法或静态变量在类中被分配了内存,所以我们可以访问静态成员函数或静态变量。所以我们可以使用类名来访问静态成员函数或数据变量,我们可以如下调用静态函数
class Main1 {
public static void main(String args[] ) {
Main1.testFunc();
}
public static void testFunc() {
System.out.println("Hello world!");
}
}
或
class Main1 {
public static void main(String args[] ) {
testFunc();
}
public static void testFunc() {
System.out.println("Hello world!");
}
}
答案是一样的,但是当静态函数在其他类中时,我们必须使用类名来调用它。