首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

新人的一个小题求大牛给解释一下,多谢了

2012-04-13 
新人的一个小题求大牛给解释一下,谢谢了class Dome0{int avoid setA(int a){this.aa}int getA(){return

新人的一个小题求大牛给解释一下,谢谢了
class Dome0
{
int a;
void setA(int a)
{
this.a=a;
}
int getA()
{
return a;
}
public static void main(String[] args)
{
Dome0 ob=new Dome0();
ob.setA(1000);
System.out.println(ob.a);
System.out.println(ob.getA());
}
}

setA()和getA()方法都是非静态的方法 而main方法是静态的为什么可以调用非静态方法?

[解决办法]
因为main()方法是程序的入口点。
[解决办法]
那些方法是属于某个类的,而类已经实例化微对象了,而且这个对象在这个函数中,所以可以直接访问了
[解决办法]
Dome0 ob=new Dome0();
已经创建了一个ob实例,你是调用实例ob的get,set方法的。


[解决办法]
main中调用的是dome实例的方法,而不是dome类的方法(实际上demo类的静态方法才可以用类来调用),你new出来的是一个实例。
[解决办法]
你是Dome0 ob=new Dome0();new了一个对象,当然可以调用,你又不是直接的调用setA(1000);
[解决办法]
因为你已经创建了一个该类的对象ob。
在静态方法中通过对象是可以调用非静态方法的。
如果去掉对象,就会出错。
[解决办法]
因为你在main方法中创建了该类的对象。调用类的方法就是通过对象来调用的。
如果没不创建类的对象,静态方法就会要找到对应的类。当是因为非静态的方法不能通过类名直接调用。必须要创建对象。所以静态方法调用非静态方法必须在静态方法中声明对象。
[解决办法]

探讨

Dome0 ob=new Dome0();
已经创建了一个ob实例,你是调用实例ob的get,set方法的。

[解决办法]
main()函数是整个程序的路口。你在main里面创建了类的对象。当然可以用对象名.方法名
[解决办法]
static 不能 调用non-static方法的意思是

public static void main(String[] args) {
 Dome0 ob=new Dome0();
 ob.setA(1000); // 正确
 setA(1); // 错误
}

这就好比main是gov,他说,“要加工资”
这就是一句病句,应当说“给某某加工资”——对不起,伟大光荣正确是不会错的

但是如果说“提高最低工资”,那就不需要前面加上对象。

热点排行