非要在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语法的规定