class B{
private int a=0;

public void c(B b){
if(this.a==b.a){
System.out.println("这怎么能调用b.a呢。。");
System.out.println("封装意义何在。");
System.out.println("getA对自己的类没有意义。");
}
}

public int getA(){
return a;
}
}

解决方案 »

  1.   

    我一直觉得这个this.a b.a就是本类的实例在本类中访问本类的私有属性不知道LZ怎么觉得
    public int g……
      

  2.   

    我觉得b.a应该报错 才符合面向对象的封装   类只是一个模板
    new出来两个 B()B b1=new B();
    B b2=new B();b1.c(b2);b1和b2 是两个对象 两个对象之间却能互相访问彼此的私有变量。
      

  3.   

    private本身定义就是如此,如果你要问为啥的话:因为这个类是一个人写的,那么也就意味着各种保护是可以不需要的(没啥恶意访问的,都是开发者你自己的事,你自己要控制好),允许程序员为了性能等因素,最大可能便捷的操作其各种私有成员。也非常符合:“模块内高内聚,模块间低耦合”的设计思想。
      

  4.   

    比如compareTo() 这个方法 我是写this.a==b.a  还是写this.a==b.getA() 呢?
    这俩我觉得都行。
      

  5.   

    private你觉得在类里和public等等没有区别。
    你自己创建一个类D,  D这个类 extends B类
    你在D类中给D实例化;
    你看看你还能不能调用B中的private的属性、方法了?
      

  6.   


    我没说private 和public 一样。  我只是说 在调用自己的时候 private 和 public 一样
    不同的类 访问权限都按照private friend protect public  子类和父类 类型不同 不属于自己调用自己
    我就是纠结为啥自己类调用自己类 没有访问权限限制 6楼的回答的意思是说为了开发方便吗?
    如果为了开发方便我觉得用this就够了 不同的对象就应该设置权限 应该无视对象类型
    同一类型的100个对象可以互相访问。 我还是觉得不符合封装。
      

  7.   

    关键字private的意思是,除了包含该成员的类之外,其他任何类都无法访问这个成员.修饰符是用来处理类和类之间关系的,如果你只有1个类文件,修饰符是咩有任何区别的想想你都只有一个类了,你还对谁公开,对谁隐藏.
    方法是自己的,引用对象是自己的,直接写或者调get都可以,因为都是自己的
    这不是道理,而且别人给我们立的规则.或许我们不得知是设计人员故意如此(为了方便)还是无心遗漏(因为只有1个类文件的工程项目机会没有)但事实却是如此
    而且,如果java向楼主说的在强调一点封装性,自己在自己的方法调私有都要用get
    我会觉得java更加啰嗦...
      

  8.   

    在CLASS B 里调用了 B的私有变量是可以直接调用的,如果是其他的类里 比如:CLASS C,是没有办法直接调用变量的 只能调用PUBLIC的方法
      

  9.   

    自己的东西自己随便可以看可以以摸,就不许别人看见,除非你自己愿意开个洞给别人看,就是get方法。相当于你自己打开了自己的拉链。