解决方法:
先实例化类,然后再调用就没有问题了
这样一来都不要加static了
public class A {
public static void main (String[] args) {
A a = new A();
b();
a.c();
}
public static void b() {
}
public void c() {
}
}
说明:
在静态方法中,不能直接访问非静态成员(包括方法和变量)。
因为,非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。
例如一个类 Student 表示学生,它有一个变量String address。
如果这个类没有被实例化,则它的 address 变量也就不存在。
而非静态方法需要访问非静态变量,
所以对非静态方法的访问也是针对某一个具体的对象的方法进行的。
对它的访问一般通过 objectName.methodName(args……) 的方式进行。
而静态成员不依赖于对象存在,即使是类所属的对象不存在,也可以被访问,它对整个进程而言是全局的。
因此,在静态方法内部是不可以直接访问非静态成员的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/103274.html