正如文本所说,静态方法不访问非静态数据,那么几乎所有编程语言中的 main() 方法(声明为静态)如何能够在实例成员上工作?
问问题
1286 次
5 回答
4
就 Java 而言,这不是真的,您只能在 main 中创建该类的实例后访问实例变量。
当您创建一个类的实例时,它就成为本地方法而不是实例,然后您正在访问该对象的属性,但是在 main 方法中您不能直接使用实例变量。
例如
public class TestStatic1 {
private int number = 0;
private static int staticnumber = 0;
public static void main(String[] args) {
number = 10; // cannot compile at this line.
staticnumber = 10;
}
}
另一个
public class TestStatic1 {
private int number = 0;
private static int staticnumber = 0;
public static void main(String[] args) {
TestStatic1 static1 = new TestStatic1();
static1.number = 10; // perfectly fine, accessed via an object.
staticnumber = 10;
}
}
于 2012-05-28T17:52:26.493 回答
2
Main
至少在 C# 中,静态方法用于创建应用程序使用的类的实例——这些实例用于访问它们的实例变量。
您将在大多数应用程序中看到new
对Main
方法的调用。这将创建一个可以访问实例变量的类的实例。
于 2012-05-28T17:55:27.337 回答
1
Main-Method 是一个静态入口点。在 Java 中,它大多看起来像这样:
public class MainClass {
public static void main(String[] args){
MainClass m = new MainClass();
m.DoSomething();
m.DoSomethingPrivate();
DoSomethingStatic
}
public void DoSomething() {}
private void DoSomethingPrivate() {}
public static void DocSomethingStatic() {}
}
它只能直接访问受保护或私有实例成员。
于 2012-05-28T17:56:59.460 回答
0
方法main
不能访问包含 main
. 如果您为它提供一个实例(或在方法中创建一个新实例),它可以访问这些实例。与此类似:
public static void foo(String s) {
System.out.println(s.toUpperCase());
}
于 2012-05-28T17:56:21.157 回答
0
“静态方法不访问非静态数据”更准确地说:静态方法不访问非静态成员。
于 2012-05-28T17:56:55.623 回答