A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑白小調° 中级黑马   /  2014-1-14 08:37  /  1073 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在静态方法中不可以直接调用非静态方法,那么怎样用静态方法调用非静态方法呢?
例如下列代码中如何使用静态方法method3调用非静态方法method2:
public classStaticTest
{
     static double PI=3.14;
     static int id;
     public static void method1( )
     {

      }     
      public void method2( )
      {
            System.out.println(StaticTest.PI);
            System.out.println(StaticTest.id);
            StaticTest.method1( );
       }
       public static StaticTest method3( )
       {
             method2( );
             return this;
       }
}
            

4 个回复

倒序浏览
静态方法不能调用非静态的。
回复 使用道具 举报
这是规定。
静态方法先于非静态方法载入内存。
因此不能使用静态方法访问非静态方法。
回复 使用道具 举报
首先要搞清楚静态和非静态的从属关系,静态是属于类本身的,可以使用类名直接调用,而非静态是属于类对象的,必须要创建对象之后才能调用。这么说不知道你能不能理解。
static方法属于类本身,如果想要在其中调用非静态方法只能先创建类对象
classStaticTest test = new classStaticTest();
test.method2();
这和main方法调用非静态方法是一样的,如果不理解再问我哈!
回复 使用道具 举报
静态方法要调用非静态方法 就必须得 先创建对象。 new 一个对象。在调用其中的非静态方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马