一般情况下,类的静态方法只允许访问静态数据(带static),如何用静态方法访问类的实例成员(即不带static的成员),请看下段代码。
1 public class Practice { 2 public static void main(String[] args) { 3 act C = new act(); 4 C.display(); 5 } 6 } 7 class act{ 8 int i = 100; 9 static int j = 200; 10 //act A = new act(); 此处声明出错:Exception in thread "main" java.lang.StackOverflowError 11 static void display() { 12 act B = new act(); 13 System.out.println(B.i); 14 } 15 }
解决方案是在静态方法中先创建该类的对象,再通过对象访问实例成员即可。在创建类的对象时,要注意其创建的位置,我在第一次创建时写在了静态方法外,即代码注释中的A,报出错误,该错误为“对象之间相互引用,最终导致栈溢出”。