Private 变量/方法问题请教

muiz 2007-10-29 03:00:01
如下类:
class A
{
private int i = 0;

public boolean equals(A a)
{
return (this.i == a.i); // <-- 这里为什么可以访问私有变量?
}
}

我只知道可以, 但没有追究过原因. 请明白之人正解!
...全文
161 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
paudal_1984 2007-10-31
  • 打赏
  • 举报
回复
public class A {

private int i = 0;

public boolean equalsA(A a)
{
return (this.i == a.i);
}
public boolean equalsB()
{
B b=new B();
return (this.i == b.v);
}
public boolean equalsC()
{
C c=new C();
return (this.i == c.r);
}
class B{
private int v=0;
}
}
我試著用了一下,發現類中的子類的私有變量也可以直接訪問(如equalsB方法)
C類是另外一個JAVA檔,其中的私有變量r就不可訪問
PS:未查資料,如有不對的地方請不吝指正
llxiong 2007-10-31
  • 打赏
  • 举报
回复
private型变量只能在本类内可以被访问。
实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
muiz 2007-10-31
  • 打赏
  • 举报
回复
明白, 学习
zhb_821012 2007-10-30
  • 打赏
  • 举报
回复
基础不扎实
wuzheng321 2007-10-30
  • 打赏
  • 举报
回复
好好看看public,protect,private的权限吧
wengs2006 2007-10-30
  • 打赏
  • 举报
回复
private属性在本类中可以访问,该类的子类、包内类、包外类都没有访问权的。。。。。。。。。。。
oldabc 2007-10-30
  • 打赏
  • 举报
回复
顶6楼说法..
胡矣 2007-10-29
  • 打赏
  • 举报
回复
private 是说只在当前类使用,不是说只在当前对象使用
muiz 2007-10-29
  • 打赏
  • 举报
回复
呵呵, 也只能这样了. 下午一个刚学java的问, 一下给问住了 :)
Dan1980 2007-10-29
  • 打赏
  • 举报
回复
这个问题从理论上来理解确实存在争议。
但java规定了,同一个类的所有实例,互相之间有完全访问权。就当它是个规定,记住就没错了。
muiz 2007-10-29
  • 打赏
  • 举报
回复
但是实例a, 对于A的equals(A)方法, 应该是个外部变量吧?
johnsoncr 2007-10-29
  • 打赏
  • 举报
回复
private i是在class A的内部定义的,所以在class A{}之内的方法可以访问它!但在其它的class里面就不可以了!
ChDw 2007-10-29
  • 打赏
  • 举报
回复
因为在类A中,总是可以访问类A的私有变量,即使是另外一个实例的私有变量。这个是Java中的规范来的

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧