关于static静态方法的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 17:36:51
书上说静态方法只能访问static成员变量或调用static成员方法,
那主类main前面的static,说明main()是个静态方法,那为什么main方法里面可以出现不是静态的的成员变量和方法,这个概念我有点糊涂了,希望有人能够帮我解除困惑,谢谢
我指是JAVA,不过我想和C++中的应该一样的道理吧

静态的意思是可以不初始化实例而直接调用。
所以,作为main函数,是程序的入口点,此时任何实例都没有初始化,自然要作为static来定义。

可能你的理解上有些问题,或者书上写的不对。

静态方法里面可以出现不是静态的的成员变量和方法的。
当然前提是先进性实例化。

比如main方法定义到一个叫Test的类中,而Test类有一个成员变量不是static型的,此时,在main里面不可以直接使用这个成员变量,必须要初始化Test类。而如果成员变量被定义为static型,则可以直接使用。

这点无论是否main都是一样的。

eg:
public class Test
{
static int a;
public int b;

public static mytest()
{
a=0; //正确,
b=0; //错误。

Test test = new Test();
test.b =0; //正确。
}
}

应该这么说:静态方法只能直接访问同一类中的static成员变量或static成员方法。
static的成员变量叫实例变量或类变量,static的成员方法叫实力方法或类方法。因为static的变量和方法可以直接用类名点出来。
而在main()方法中使用非静态变量和方法是需要用对象点出来的,而不能直接使用,如果你直接使用了,编译器是会报错的(除非你用文本编程)。。。。。
在main()方法中不能直接使用非静态成员的主要原因是:在类装载时(就是程序运行)初始化的顺序时:static类型的变量和方法、成员变量和方法、方法变量。
从初始化顺序可以看出,static的方法初始化时成员变量和成员方法还没有初始化,也就时不存在,所以会出现错误!~

main方法里边不能直接调用非静态的方法和属性,调用的时候肯定是对这个类实例化了一个对象,然后用这个对象调用方法和属性