【转载】关于“静态方法不能调用非静态方法”的补充解释
2009-05-08 05:27
351 查看
找到一篇文章验证了我之前的想法(static方法调用non-static方法必须通过传对象参数的方式,因为non-static方法是与对象实例对应的) http://hi.baidu.com/danghj/blog/item/1f96d1eac9771cd6d539c986.html 静态方法中调用非静态方法 我们都知道,静态static方法中不能调用非静态non-static方法,准确地说是不能直接调用non-static方法。但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-static方法。 其实这个事实的应用很经常,以至于我们不去重视:在主函数(static方法)中我们经常创建某个类的实例,再利用其饮用变量调用它的非静态方法。 //StaticMethodTest.java //A ststic method cannot call a non-static method, but we can transfer a object reference, which include a non-static metho to the static method, thus, wo can call that non-static method in a indirect way. public class StaticMethodTest{ void NonStaticMethod(){ System.out.println("This is a non-sataic method."); } static void StaticMethod(StaticMethodTest s){ System.out.println("This is a static method."); s.NonStaticMethod(); } public static void main(String[] args) { StaticMethodTest sObj=new StaticMethodTest(); StaticMethod(sObj); //在主函数中可以直接调用静态方法 } } |
相关文章推荐
- 深入this关键字(静态方法中不能调用非静态成员的解释)
- 关于静态方法不能调用类中的非静态属性的理解
- 浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法(转载)
- 关于ASP.NET中调用Excel组件不能结束进程的解决方法
- 关于Android中调用了post方法后貌似没有执行run方法的解释及解决办法
- 关于QWidget的子类调用show()方法不能显示的问题
- day59(5.9)程序报错类型之类中的静态方法不能直接调用动态方法
- 今天发现c#中的实例后的对象是不能调用静态方法,以前学Java的时候是可以的.
- [java]静态方法不能调用静态变量
- 为什么java静态方法不能调用普通方法?普通方法能调用静态方法?
- java中静态方法中为什么不能使用this、super和直接调用非静态方法
- 为什么从静态方法里不能调用非静态的方法和变量
- 为什么不能从静态的方法里面调用非静态方法,或变量?
- 关于静态方法为什么不能被重写的一点思考以及overload的一些坑。
- 静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)
- 关于子类为何不能继承父类构造方法的几点解释
- 为什么不能从静态的方法里面调用非静态方法,或变量?
- 关于静态方法为什么不能被重写的一点思考以及overload的一些坑。
- 调用静态方法是不能用this关键字的。直接使用类名就可以了
- 关于cocos2dx如何绑定c++的静态方法和类给lua调用