社区
Java SE
帖子详情
为什么在类方法(静态方法)中不可调用实例变量(对象变量)?
ggggosling
2004-09-02 07:44:45
如题
...全文
336
5
打赏
收藏
为什么在类方法(静态方法)中不可调用实例变量(对象变量)?
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fireflyqt
2004-09-02
打赏
举报
回复
你思考这样一个问题:假设可以调用,那么调用的非静态变量应该属于谁呢?
sjtsh
2004-09-02
打赏
举报
回复
在加载类时,在内存中已为静态方法分配了内存,此时还没有创建对象
而,实例方法只有在创建对象并被对象调用时才分配内存。
不知我的理解对不对
欢迎指正
zgysc
2004-09-02
打赏
举报
回复
静态方法属于类本身,不属于类的实例!
treeroot
2004-09-02
打赏
举报
回复
这样调用没有意义,静态方法属于类,不数据对象.
但是对象可以调用类方法.
fdm_sea
2004-09-02
打赏
举报
回复
因为类方法不创建对象
静态
方法
(
对象
方法
)、
实例
方法
的
调用
1、
静态
方法
被 static 修饰;
实例
方法
没有被 static 修饰。 2、
静态
方法
中
不能有 this 关键词。(我也不知道为啥,有大佬知道的,可以传授一下) 3、
实例
方法
中
可
调用
实例
方法
、
静态
方法
。 4、
静态
方法
中
可
调用
静态
方法
。 5、
静态
方法
中
不能
调用
实例
方法
。(结合2、6条) 6、
调用
同一个
类
中
的
实例
方法
、成员
变量
的标准格式为:
对象
名.
方法
名(…)、
对象
名.成员
变量
名; 也可通过
方法
名(…)、 成员
变量
名
调用
因为通过此法
调用
时程序会自动在
方法
名(…)、 成员
变量
名 之前添加 this. (不
关于
类
方法
里不能
调用
实例
方法
/成员
变量
(即
静态
方法
里不能
调用
非
静态
方法
和成员
变量
)的论述
关于
类
方法
里不能
调用
实例
方法
/成员
变量
的论述 参考《疯狂Java讲义》 首先要明白无论
调用
成员
变量
还是
方法
,都需要主调(主语
调用
者),其格式为:主调.
方法
/成员
变量
别看我们平时可以直接使用
方法
名/
变量
名,其实他们都有默认的前缀。如果是static修饰的,默认
类
名为前缀,没有static修饰的话,默认this为前缀。 记住一句话:谁
调用
这个
方法
,this就代表谁 接下来进入正题。标题的情况
中
,
类
...
静态
方法
为什么不能
调用
非静态成员(成员
方法
和成员
变量
)?
静态
方法
为什么不能
调用
非静态成员(成员
方法
和成员
变量
)?
静态
方法
在项目编译时就运行了,是属于
类
的。 当new
对象
时会
调用
构造器,
实例
化
对象
,非静态
变量
才存在
静态
方法
在编译的时候非静态
变量
还不存在,而动态
方法
只能通过
对象
来
调用
,所以
静态
方法
不能
调用
非静态成员。 非
静态
方法
可以
调用
静态成员。 出于安全考虑,可以将父
类
的某个
方法
用final修饰,这样子
类
就不能修改这个
方法
了。 ...
java基础06 为什么
静态
方法
不可
以
调用
非
静态
方法
和静态
变量
静态
方法
静态
方法
不可
以调非静态全局
变量
,从内存的角度看,就是当
类
被加载的时候
静态
方法
和静态属性(全局静态
变量
)被加载到内存
中
,就是在内存
中
开辟一段内存地址用来保存
静态
方法
和静态属性,这时候没有被
实例
化的
类
在内存
中
是不存在的,所以
静态
方法
是不能访问非静态的全局
变量
。在
类
被
实例
化的时候,就是new 某个
类
的时候,在内存
中
给这个
类
开辟一些内存空间保存这个
类
的
对象
,这个时候就可以用
静态
方法
去访问非静态的全部
变量
。 那为什么main
方法
是
静态
方法
,却可以
调用
非
静态
方法
呢? 因为
类
在main函数被
实例
化的时候,已经在
为什么
静态
方法
里不能访问
实例
变量
?
从范围来说来说,java
中
静态的东西是
类
级别的,也就是说用
类
名就可访问,也可以用任何
对象
名访问,无论以哪种形式访问的都是同一个东西。而一般我们所说的成员
变量
,是指
对象
级别的,也就是说每一个
对象
所拥有的成员
变量
都是独立的不同的
变量
,是属于
对象
自己拥有的。相对于来说访问范围,无疑是静态的更大,静态的可以被任何
对象
所访问且是同一个,而成员
变量
是每个
对象
各自拥有的。那么,为什么“
静态
方法
不能
调用
类
成员
变量
”,因为要想访问成员
变量
你必须有个“已经
实例
化好的
对象
”,除非你在
静态
方法
里创建一个当前
类
的
实例
对象
,否则你是无
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章