为什么类的静态方法不能访问类的非静态资源
2013-09-24 21:26
435 查看
为什么静态的方法,只能访问静态资源(如静态属性或方法),却不能访问非静态资源?而非静态方法可以访问静态资源?
-> 首先,非静态方法可以访问静态资源:比如产生了一个类的实例,调用实例的普通非静态方法,方法内部访问另外一个类的一些静态资源,如static final 类型的常量,这个很常用,容易理解。
-> 其次,为什么静态方法不可以访问非静态资源?我们知道,静态属性和方法,是随着类的加载就已经加载进来了,此时类的实例并没有产生。假设虚拟机加载类A的静态方法f1时,f1内部访问了另外一个类B的非静态资源(如属性b),那么,我们知道,由于类的非静态资源只有类的实例可以访问,只有类产生了实例才能访问到,很好,那么请问此时类B实例化了吗?类B有实例对象出来了吗?而类A却要去访问人家的非静态资源了,这显然就是试图去访问一个不存在的资源,所以,原因已经很明显了。
-> 首先,非静态方法可以访问静态资源:比如产生了一个类的实例,调用实例的普通非静态方法,方法内部访问另外一个类的一些静态资源,如static final 类型的常量,这个很常用,容易理解。
-> 其次,为什么静态方法不可以访问非静态资源?我们知道,静态属性和方法,是随着类的加载就已经加载进来了,此时类的实例并没有产生。假设虚拟机加载类A的静态方法f1时,f1内部访问了另外一个类B的非静态资源(如属性b),那么,我们知道,由于类的非静态资源只有类的实例可以访问,只有类产生了实例才能访问到,很好,那么请问此时类B实例化了吗?类B有实例对象出来了吗?而类A却要去访问人家的非静态资源了,这显然就是试图去访问一个不存在的资源,所以,原因已经很明显了。
相关文章推荐
- 大家都有的迷茫我也来了
- Android 内存优化
- 使用Spring的JAVA Mail支持简化邮件发送
- org.springframework.web.util.IntrospectorCleanupListener的用途
- 读记:活着活着就老了
- CSS基础(一):开篇
- 数据库与java程序数据传递过程中日期类型的转换
- 题目1123:采药
- Codepage、Character Set与语种对照表
- JAVA邮件发送的简单实现
- CSS+DIV实现文字一行内显示,并且过多的文字以点来代替
- ets dets
- POJ 1321 棋盘问题
- 阿里巴巴笔试
- JAVA网络编程:TCP通信
- Android开发 之 Android项目中如何正确的引入第三方jar包(工程)
- 刚开通,高兴一下!!
- Intent和PendingIntent的区别
- POJ 1159 Palindrome
- 题目1112:拦截导弹