Java中我们都知道,static 方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来是可以的。这里我举一个例子,在一个静态方法中调用非静态方法。
package com.Test1;
public class Blog {
public static void main(String[] args) {
// TODO Auto-generated method stub
Medicine m = new Medicine();
doctor(m);
}
//一个静态方法
public static void staticTest()
{
System.out.println("Test");
}
//一个静态方法
public static void doctor(Medicine m)
{
//在静态方法内部调用静态方法
staticTest();
//在静态方法内部调用非静态方法
m.getName();
}
}
class Medicine
{
public void getName()
{
System.out.println("aspirin");
}
}
输出结果:
Test
aspirin
可以看到,在static方法内部可以直接调用静态方法,也可以调用非静态方法,原因就在于如果你传递一个对象的引用到静态方法里,研后通过这个引用,就可以调用非静态方法了。