静态方法中调用非静态方法
2006-03-12 12:02
218 查看
我们都知道,静态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); //在主函数中可以直接调用静态方法
}
}
其实这个事实的应用很经常,以至于我们不去重视:在主函数(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); //在主函数中可以直接调用静态方法
}
}
相关文章推荐
- 调用DLL有两种方法(静态调用和动态调用)简介
- [分享] 实例方法与静态方法互相调用解决方案
- 静态方法中调用非静态方法
- 关于静态方法不能调用类中的非静态属性的理解
- 多线程调用同一静态方法会有多线程问题吗
- 关于cocos2dx如何绑定c++的静态方法和类给lua调用
- DataList中TextBox onfocus调用后台静态方法
- 调用另一类的静态,非静态属性的方法,静态块,构造块,运行先后
- java静态方法中调用非静态方法的实现
- 静态方法的调用
- struts调用java静态方法
- OGNL调用静态属性和静态方法
- php -- 类对象调用静态方法
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- object-c调用静态方法
- 总结面试中问到的一个问题构造函数、静态代码块、和调用的方法的加载顺序
- flex 自定义类as 调用类 静态方法 flex 教程 flex培训 flex源码 flex实例
- php面向对象中static静态属性和静态方法的调用
- 在工作流内部调用宿主的静态方法终止工作流的执行
- 静态成员方法只能调用静态成员方法和静态成员变量。