日期:2014-05-20  浏览次数:20723 次

非要在main方法中声明创建的对象才能使用调用的方法么
1、程序报错
class   a  
{  
a   A=new   a();  
a()   {  
}  
void   c()   {  
}  
}
  class   b  
{   b   test   =   new   b();//这是初始创建的对象
a   B;  
void   f()  
{   B.c();  
              }  
public   static   void   main(String[]   args)
{
test.f();
      }
    }  
2这是正确的
class   a  
{  
a   A=new   a();  
a()   {  
}  
void   c()   {  
}  
}
  class   b  
{
a   B;  
void   f()  
{   B.c();  
              }  
public   static   void   main(String[]   args)
{b   test   =   new   b();
test.f();
      }
    }  

非要将b   test   =   new   b();放到main方法中声明test.f();这个方法才能在main方法中调用么?我如果只想象1中那样在初始创建然后在main中调用test.f();方法我该怎么去做呢?

------解决方案--------------------
可以这样写
class b {
static void f() {
......
}
public static void main(String[] args) {
this.f(); //这里的this就指类b
}
}
就是说在声明时加static关键字,这样这个方法就成为一个类方法了,不用实例化这个对象就可以调用.
------解决方案--------------------
public static void main(String[] args) {}是一个特殊的调用函数,你可以将它看成独立于类之外的一个函数。假设你将它独立于class b外,你看看test.f()能调用么?
你看看下面这个例子
class one{
void f(){
}

}

class two{
one o=new one();
void g(){
o.f();
}
}
在two中o.f()就能调用,而吧g()改成public static void main(String [] args)就不行的
------解决方案--------------------
main()方法.是静态方法...
静态方法是不能直接调用非静态方法的...所有必须得new类的对象,通过对象来调整类中的方法.这是java语法的规定