public class MainTest {
TT t = new TT();
public void go() {
System.out.println("is going");
}

public static void main(String[] args) {
t.play();
go();
}
}class TT {
public void play() {
System.out.println("TT play");
}
}代码如上。我知道main方法是静态的 ,但是就是不能理解一些用法。比如上面的代码。
 t.play(); 和go();都调用错了。
为什么把 TT t = new TT(); 放到main方法里面以后,t.play()就能调用呢,
go方法又该怎么调用呢
很菜的问题。希望高手解答下

解决方案 »

  1.   

    静态加载后,对象可能未建立,所以为避免这种错误,编译不让过
    静态可以调用静态 非静态既可以调用静态也可以调用非静态
    你这里改成new MainTest ().t.play();new MainTest ().go();
    这些都是成员属性 要对象来访问
      

  2.   

    java中都是对象,方法都是通过对象去调用的
      

  3.   

    恩。
    还想问下。如果不用你说的方法,如果在main方法里面定义
    TT t = new TT();
    就可以直接用t.play().这又是为什么呢?还有MainTest()的构造方法也为什么要写在main方法以内呢。
    写在main以外,类以内为什么不行呢
      

  4.   


    想请问下创建对象MainTest m = new MainTest(); 为什么要写在main()方法以内呢。写在外面就不能
    用m.go()这个形式了
      

  5.   

    main方法里面就不是MainTest的成员了 那是局部变量
    那不是定义构造函数,那是new对象,这两个是有区别的
      

  6.   

    class Test
    {
         public Test()
         {
                 //这里是定义构造函数,默认的不写也可以   
         }
        T t;//这里是成员变量
           public static void main(String[] args)
          {      
              T t;//这里是局部变量
                new Test();//可以认为是调用构造函数,new对象,这里不是定义构造函数
         }
    }
      

  7.   

    main方法是程序的入口,程序从这里开始运行,main方法刚开始运行的时候,MainTest类的其他部分还只是定义,并没有参与运行。如果你要在main方法里面调用go(),就要通过go()所在的对象调用,因此,在调用之前保证这个对象存在,也就是在main方法里面创建该对象,因为只有在main方法里面才能够被执行到。