我的java程序出现了问题:无法从静态上下文中引用非静态变量subName和fpi

2024-11-01 08:43:19
推荐回答(1个)
回答(1):

你没能彻底理解面向对象的“状态”和“静态",或者你不理解 Eclipse 报告的这个错误怎么对应到你已经知道的一些编程常识中去。

状态 (State) 是表示对象的某些属性值,比如一个成员变量,它是反应这个对象本身的信息和状态的值。而静态 static 而不是反应某个对象实例的状态信息的。

因此在一个静态的方法中是不能直接访问非 static 变量,我们必须知道你想访问的是哪个对象实例的状态,也就是说我们必须用 myInstance.fieldA 这种方法来访问,这也要求我们手上必须有一个对象实例。

所以你的代码中:
Sub sub=new Sub();
System.out.println("Sub.subName= "+Sub.subName);

这个 Sub.subName 看起来应该写成:sub.subName