我们在学到静态的时候,毕老师曾说:静态方法只能访问静态成员。
但是,为什么我在创建静态方法的时候可以访问到非静态成员方法呢?如下代码:
class Person {
public static void method() {
new Person().run();
}
public void run() {
}
}
method() 是个静态函数,不依赖于对象而存在。而你在这个函数中new Person(),创建了一个Person类对象,run()方法是Person类的非静态函数,非静态的函数是依赖于对象存在的,对象必须实例化之后,它才会在内存中存在。你 new Person().run()等于是创建了一个Person类对象并调用Person类的非静态成员函数,所以会发生这个状况!