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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Fc10232   /  2012-5-17 18:09  /  4178 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

袁冬梅 发表于 2012-5-17 19:43
囧,public static Person getp(){                     
这句话就是static修饰的呀,怎么还说是非static ...

static里的一个引用调用了非static的方法···是不?

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 就冲你这学习的态度,加分是必须的,赞赞赞.

查看全部评分

回复 使用道具 举报
袁冬梅 发表于 2012-5-17 19:43
囧,public static Person getp(){                     
这句话就是static修饰的呀,怎么还说是非static ...

static里的一个引用调用了非static的方法···是不?
回复 使用道具 举报
Fc10232 发表于 2012-5-17 19:41
那是不是调用了非staitc方法?

我刚刚解释得很明白了,实际上没有调非static方法,只是返回了一个引用p。new person()是在main程序运行前就创建了对象。
回复 使用道具 举报
Fc10232 发表于 2012-5-17 19:49
static里的一个引用调用了非static的方法···是不?

Person.getp().print();
总算懂了,你说的是这句话是吧。

我帮你还原一下这句话吧,我觉得还原出来之后,你基本能懂整一个表达式的意思了
Person p = Person.getp();
P.print();

这样的话,看得懂了吧, Person.getp()的返回值是一个Person对象,所以,后面调用的print()其实是对象调用的,而不是静态方法调用。。咳咳,而且方法也不能调用方法吧。O(∩_∩)O~
回复 使用道具 举报
袁冬梅 发表于 2012-5-17 19:54
Person.getp().print();
总算懂了,你说的是这句话是吧。

可以这样还原么·······
回复 使用道具 举报
Fc10232 发表于 2012-5-17 19:37
class Person{
        private static Person p = new  Person();
        private Person(){}

这跟单例有什么关系么?而且这也不是通过getp()获得的方法啊
回复 使用道具 举报
static修饰的属性,他不属于任何一个对象,它随着类的加载已经加载进来了,它是公共的,而this关键字是当前对象,
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马