当前位置:编程学习 > JAVA >>

java类 自己调用自己无视private 这是为啥。 谁来解答一下

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;
}
}
--------------------编程问答-------------------- 我的钱包放在我自己的口袋里面,当然只能我自己用了. --------------------编程问答-------------------- 私有的成员变量自己当然能调用啦... --------------------编程问答-------------------- 钓鱼岛是私有的,中国人都可以上钓鱼岛,日本人不可以,类也是一样不同的关系就有不同的权利。 --------------------编程问答--------------------
引用楼主  的回复:
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对自己的类没有意义。");
}
}



我一直觉得这个this.a b.a就是本类的实例在本类中访问本类的私有属性

不知道LZ怎么觉得
public int g…… --------------------编程问答-------------------- 我觉得b.a应该报错 才符合面向对象的封装   类只是一个模板
new出来两个 B()

B b1=new B();
B b2=new B();

b1.c(b2);

b1和b2 是两个对象 两个对象之间却能互相访问彼此的私有变量。 --------------------编程问答-------------------- private本身定义就是如此,如果你要问为啥的话:

因为这个类是一个人写的,那么也就意味着各种保护是可以不需要的(没啥恶意访问的,都是开发者你自己的事,你自己要控制好),允许程序员为了性能等因素,最大可能便捷的操作其各种私有成员。

也非常符合:“模块内高内聚,模块间低耦合”的设计思想。 --------------------编程问答-------------------- 比如compareTo() 这个方法 我是写this.a==b.a  还是写this.a==b.getA() 呢?
这俩我觉得都行。 --------------------编程问答--------------------
引用 6 楼  的回复:
private本身定义就是如此,如果你要问为啥的话:

因为这个类是一个人写的,那么也就意味着各种保护是可以不需要的(没啥恶意访问的,都是开发者你自己的事,你自己要控制好),允许程序员为了性能等因素,最大可能便捷的操作其各种私有成员。

也非常符合:“模块内高内聚,模块间低耦合”的设计思想。


原来是这样 --------------------编程问答-------------------- private定义是这样的 --------------------编程问答-------------------- 大概如此吧 --------------------编程问答-------------------- private你觉得在类里和public等等没有区别。
你自己创建一个类D,  D这个类 extends B类
你在D类中给D实例化;
你看看你还能不能调用B中的private的属性、方法了? --------------------编程问答--------------------
引用 11 楼  的回复:
private你觉得在类里和public等等没有区别。
你自己创建一个类D, D这个类 extends B类
你在D类中给D实例化;
你看看你还能不能调用B中的private的属性、方法了?


我没说private 和public 一样。  我只是说 在调用自己的时候 private 和 public 一样
不同的类 访问权限都按照private friend protect public  子类和父类 类型不同 不属于自己调用自己
我就是纠结为啥自己类调用自己类 没有访问权限限制 6楼的回答的意思是说为了开发方便吗?
如果为了开发方便我觉得用this就够了 不同的对象就应该设置权限 应该无视对象类型
同一类型的100个对象可以互相访问。 我还是觉得不符合封装。
--------------------编程问答-------------------- 都是同一个B类的对象,所以肯定会能调用自己的属性的。6楼的意思是在同一个类中,属性访问权限是可以不需要的。如果是不同类,最好加上访问权限 --------------------编程问答-------------------- 靠自己都不能用,那还给谁用? --------------------编程问答-------------------- 关键字private的意思是,除了包含该成员的类之外,其他任何类都无法访问这个成员.

修饰符是用来处理类和类之间关系的,如果你只有1个类文件,修饰符是咩有任何区别的

想想你都只有一个类了,你还对谁公开,对谁隐藏.
方法是自己的,引用对象是自己的,直接写或者调get都可以,因为都是自己的
这不是道理,而且别人给我们立的规则.

或许我们不得知是设计人员故意如此(为了方便)还是无心遗漏(因为只有1个类文件的工程项目机会没有)

但事实却是如此


而且,如果java向楼主说的在强调一点封装性,自己在自己的方法调私有都要用get
我会觉得java更加啰嗦... --------------------编程问答--------------------
引用 6 楼  的回复:
private本身定义就是如此,如果你要问为啥的话:

因为这个类是一个人写的,那么也就意味着各种保护是可以不需要的(没啥恶意访问的,都是开发者你自己的事,你自己要控制好),允许程序员为了性能等因素,最大可能便捷的操作其各种私有成员。

也非常符合:“模块内高内聚,模块间低耦合”的设计思想。

当初分数与你相差无几,短短6个月,发现再也无法望其硕背。 --------------------编程问答-------------------- 在CLASS B 里调用了 B的私有变量是可以直接调用的,如果是其他的类里 比如:CLASS C,是没有办法直接调用变量的 只能调用PUBLIC的方法 --------------------编程问答-------------------- 在同一类里面,当然可以调用了 --------------------编程问答-------------------- 自己的东西自己随便可以看可以以摸,就不许别人看见,除非你自己愿意开个洞给别人看,就是get方法。相当于你自己打开了自己的拉链。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,