A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


从内存和对象两方面给讲讲奥

点评

看看这个帖子http://bbs.itheima.com/forum.php?mod=viewthread&tid=3247,,论坛里面有很多,LZ自己搜一下学习一下  发表于 2012-7-23 13:46

4 个回复

正序浏览
static 是类一装载就开始初始化了(想要调用非static方法),这时候还没有对象。而非static 的方法需要对象才能调用,所以这样会报错。
回复 使用道具 举报
可以是可以,给你看代码。
  1. public class Tm {

  2.         /**
  3.          * @param arg
  4.          */
  5.         public static void main(String[] args) {
  6.                 System.out.println("静态方法");
  7.                 new Tm().md();
  8.         }
  9.        
  10.         public void md(){
  11.                 System.out.println("被调用的非静态方法");
  12.         }
  13. }
复制代码
静态方法想要掉用非静态的,必须是对象的实例,
回复 使用道具 举报
本帖最后由 刘馨琪 于 2012-7-23 13:17 编辑

不可以。先要有能调用非静态方法的对象,再用对象调用目标非静态方法。
因为静态先加载,静态内部有非静态,无法加载。
静态先存在于内存中,非静态此时没进内存,自然无法加载。
有了对象就不同了,对象在内存中,可以被静态调用。
所以静态中调用非静态,需要拥有此非静态的对象。这也是面向对象的基本思想,谁有数据,谁就对外提供操作这些数据的方法。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马