关于私有变量在类中调用的问题

ylj1079 2004-11-19 08:25:24
有如下类定义:
class Test{
private int b;
public int c(Test a){
int i;
return i+a.b;
}
}

按照类中关于私有的实例变量的理解,a是一个Test的对象,那么实例成员变量b由于是私有的,应该不能利用a.b来访问,但程序中该编译是可以通过的,而且也能正常运行得到结果。
我不知道大家对此是怎么理解的?
...全文
72 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jFresH_MaN 2004-11-19
看来只能这么理解了
回复
okitgo 2004-11-19
像这种程序也是可以执行的
public class Test {
private static int xxx=99; //私有变量
public static void main(String[] args) {
Test ww=new Test();
System.out.println(ww.xxx); //访问私有变量
}
}
回复
okitgo 2004-11-19
privat(私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息. 因为a的类型也是Test,现在的a是在Test的内部.所以是可以访问的. 这是说的是类,不是对象!!!
回复
jFresH_MaN 2004-11-19
我测试了一下,确实没问题
我也觉得很奇怪
难道说真的是只要是再类的内部就能访问私有成员?
可能吧

呵呵,涨知识了
回复
ylj1079 2004-11-19
本来私有变量的目的是封装,但这样的话在该类的内部生成的对象可以随意的操作该变量,一些类似的有效性检查好象就没办法控制了,而且破坏了关于私有变量定义理解,好象有点不伦不类的感觉。。
回复
pbMaster 2004-11-19
这很不合理,应该编译不通过的!
回复
treeroot 2004-11-19
你的说法是有一定道理的,但是这里确实是在Test的内部,即使生成新的实例,也是可以访问私有变量的.
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告