本帖最后由 江海豪 于 2015-10-7 11:32 编辑
非静态调用静态 是 直接引用
静态调用非静态 不能 直接引用 是间接引用
你说的使用对象调用非静态成员方法,你能在main方法上面直接使用对象调用吗?我把 c 传到ask中 是把引用传入static修饰的ask()方法中, 让ask()里面的x有内存地址 然后去访问say() 这叫间接引用好吧, 对象在堆中,引用在栈中
引用是对象的一个名字
如果你学过C/C++的话,可以将引用理解为java的指针
我这方法只是转牛角尖的去访问,没说好用和符合。
你那句使用对象调用非静态成员方法 是没看清代码。
Test c = new Test(2);
c.ask(c);
而不是
Test c = new Test(2);
c.ask();不是不能访问,是一般实例方法访问实例成员隐含了对象的引用,静态方法不隐含对象的引用,所以要显式传入引用
|