Java问题:为什么类方法中不能访问普通成员变量而只能访问类变量??
4个回答
展开全部
呵呵,他们说的是不是不好理解啊?
好吧,那我举个容易理解的例子告诉你啊。
你说的“普通成员变量”其实就是“对象变量”,“普通成员”就是“对象方法”;
“静态变量”就是“类变量”,“静态方法”就是“类方法”。
这里面就涉及到类与对象的关系,我们举个例子:
人就是一个类,而由人生成出来的姚明、安东尼就是对象。
“人的眼睛个数”是类变量;
get人的眼睛个数()是类方法;
“身高”是对象变量;
get身高()是对象方法;
“普通成员方法可以访问静态变量”,也就是在姚明这个对象的get身高()中姚明想顺便获取“人的眼睛个数”那是可以的,就是2个眼睛吗。
“而相反的为什么静态方法却不能访问普通成员变量???为什么??”,在人这个类的get人的眼睛个数()中想获取身高。获取谁的身高呢?人这个类生出了那么多的对象出来,姚明有身高,安东尼有他的身高等等,人这个类不知道要获取哪个的啊。
从面向对象的思想来看,压根就说不过去啊。
这么长篇大论的希望对你有帮助哦。
好吧,那我举个容易理解的例子告诉你啊。
你说的“普通成员变量”其实就是“对象变量”,“普通成员”就是“对象方法”;
“静态变量”就是“类变量”,“静态方法”就是“类方法”。
这里面就涉及到类与对象的关系,我们举个例子:
人就是一个类,而由人生成出来的姚明、安东尼就是对象。
“人的眼睛个数”是类变量;
get人的眼睛个数()是类方法;
“身高”是对象变量;
get身高()是对象方法;
“普通成员方法可以访问静态变量”,也就是在姚明这个对象的get身高()中姚明想顺便获取“人的眼睛个数”那是可以的,就是2个眼睛吗。
“而相反的为什么静态方法却不能访问普通成员变量???为什么??”,在人这个类的get人的眼睛个数()中想获取身高。获取谁的身高呢?人这个类生出了那么多的对象出来,姚明有身高,安东尼有他的身高等等,人这个类不知道要获取哪个的啊。
从面向对象的思想来看,压根就说不过去啊。
这么长篇大论的希望对你有帮助哦。
展开全部
你说的java中的普通成员是在new一个对象的时候才产生的,而static成员是编译这个类的时候就产生了。有一个先后顺序。方法同理。
所以你写静态方法的时候 没有创建对象实例,所以还没有非静态的成员,所以不能调用
所以你写静态方法的时候 没有创建对象实例,所以还没有非静态的成员,所以不能调用
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这牵扯到类加载与类实例化的问题。类中的静态方法与静态变量都是在类加载的时候进行初始化的,而类中普通方法跟普通变量都是在类实例化的时候才初始化。由此你的问题就显而易见了,普通成员方法可以访问静态变量是因为普通方法初始化的时候说明类已经在实例化了,此时静态变量、静态方法都已经初始化完毕,所以可以访问。而静态方法不能访问普通成员变量是因为静态方法初始化的时候类并没有实例化,也就是说此时普通成员变量还没有初始化,所以不能访问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要明白什么是静态的就好理解这个问题了,静态的方法可以不用初始化一个类就可以使用,这个时候怎么能访问普通的成员变量呢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询