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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhouxp3323 黑马帝   /  2012-4-10 22:23  /  1491 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个Person类,它的对象是p,访问它的name属性,怎么有时可以直接写 p.name ?怎么有时又不能写p.name而只能写p.getName()呢?折腾了我好久啊,因为我的几个程序中,有p.name直接访问的,而有的程序中不能这么写?哪位大虾能指导下吗?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
代码是你自己写的吗? 如果把name私有化了就不能直接访问了,要调用方法访问,比如你这里的getName()方法,如果代码是你自己写的你不会不知道的...

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
问题应该出在你的name属性的访问修饰符上啊。记住四个访问修饰符的访问范围分别是:
public 访问范围最大,也就是任何其他类都可以调用这个类的方法或属性。
private 访问范围最小,也就是只能在这个类的内部使用,外部调用不了
protected 访问范围算是中间,只有本类和子类才能访问。
默认(无):只有本类和包内才能访问。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
是封装的原因,如果私有的属性是不能直接访问的,代码中public ....set() ,public .....get() 方法就是为了封装,才提供的方法。俺学艺不精,仅供参考!!
回复 使用道具 举报
如果你的属性name同过private修饰符修饰,那么你就不能直接通过  对象.属性   的方法调用
而要定义一个getName()方法通过return返回一个name
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马