java#静态方法与非静态方法的访问

java#静态方法与非静态方法的访问

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

转载于:https://my.oschina.net/FZUXMUBMW/blog/338108

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值