java 中静态方法与非静态方法的访问
public class StaticMethod {
//定义一个非静态方法
public void callMe2()
{
System.out.println("This is a nonstatic method");
}
//定义一个静态方法
public static void callMe() //静态方法
{
System.out.println("This is a static method");
}
public void Test(){
callMe(); //正确,可以直接调用访问本类静态方法
callMe2(); //正确,可以直接调用访问本类非静态方法
StaticMethod.callMe(); //调用静态对象无需创建对象,可以直接用“类名。方法名”访问
StaticMethod mob=new StaticMethod();
mob.callMe2(); //调用非静态的使用“对象。方法名”访问
}
public static void main(String[] args){
StaticMethod.callMe(); //静态方法在访问本类的成员时,只允许访问静态方法,在静态方法中不能调用非静态的方法和引用非静态的成员变量
callMe(); //正确,可以直接调用访问本类静态方法
//callMe2(); //静态方法在访问本类的成员时,只允许访问静态方法,所以不能直接访问callMe2();因为callMe2()是非静态的。
StaticMethod oa=new StaticMethod();
oa.Test(); //静态方法在访问本类的成员时,只允许访问静态方法,Test是非静态的,尽管Test内部又调用了静态的CallMe()
}
}
class Run{
public void RunTest(){
// callMe(); //错误
// callMe2(); //错误
StaticMethod.callMe(); //调用静态对象无需创建对象,可以直接用“类名。方法名”访问
//StaticMethod.callMe2(); //错误
StaticMethod ob=new StaticMethod();//调用非静态对象要先实例化对象
ob.callMe2(); //调用非静态的使用“对象。方法名”访问
}
public static void Run_main(String[] args){
StaticMethod.callMe(); //静态方法在访问本类的成员时,只允许访问静态方法,在静态方法中不能调用非静态的方法和引用非静态的成员变量
//StaticMethod.callMe2(); //静态方法在访问本类的成员时,只允许访问静态方法,所以不能直接访问callMe2();因为callMe2()是非静态的。
StaticMethod oa=new StaticMethod();
oa.callMe(); //调用静态对象无需创建对象,可以直接用“类名。方法名”访问,也可以使用“对象。方法名”访问
oa.callMe2(); //调用非静态的使用“对象。方法名”访问
oa.Test(); //静态方法在访问本类的成员时,只允许访问静态方法,Test是非静态的,尽管Test内部又调用了静态的CallMe()
}
}