java 访问控制
答案:3 悬赏:80 手机版
解决时间 2021-02-24 10:23
- 提问者网友:骑士
- 2021-02-23 10:49
java 访问控制
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-02-23 10:57
Class A{
private C attr1;
public A(){
attr1=new C();
}
public copyAttr(B b){
b.attr2=attr1;
}
}
Class B{
public C attr2;
}
Class C{
}
建立AB两个类的实例以后调用A的copyAttr,这样A的attr1和B的attr2就是同一个C类对象的引用,即修改B中的attr2会对A中的attr1有影响。同时attr1是private 而attr2却是public 的
private C attr1;
public A(){
attr1=new C();
}
public copyAttr(B b){
b.attr2=attr1;
}
}
Class B{
public C attr2;
}
Class C{
}
建立AB两个类的实例以后调用A的copyAttr,这样A的attr1和B的attr2就是同一个C类对象的引用,即修改B中的attr2会对A中的attr1有影响。同时attr1是private 而attr2却是public 的
全部回答
- 1楼网友:不如潦草
- 2021-02-23 12:46
public class Test {
public static void main(String[] args) {
Object o = new Object();
System.out.println(o.hashCode());
PrivateIn pi = new PrivateIn(o);
SomeOtherObject soc = new SomeOtherObject(o);
}
}
class PrivateIn{
private Object o;
PrivateIn(Object o){
this.o = o;
System.out.println(this.o.hashCode());
}
}
class SomeOtherObject{
public Object o;
SomeOtherObject(Object o){
this.o = o;
System.out.println(this.o.hashCode());
}
}
只是举个例子,并不是太合理,其实他就是想告诉你即使你标了private也不能保证这个private的真正做到“私有”,你私有的只是引用,而对象还能被其他引用关联
public static void main(String[] args) {
Object o = new Object();
System.out.println(o.hashCode());
PrivateIn pi = new PrivateIn(o);
SomeOtherObject soc = new SomeOtherObject(o);
}
}
class PrivateIn{
private Object o;
PrivateIn(Object o){
this.o = o;
System.out.println(this.o.hashCode());
}
}
class SomeOtherObject{
public Object o;
SomeOtherObject(Object o){
this.o = o;
System.out.println(this.o.hashCode());
}
}
只是举个例子,并不是太合理,其实他就是想告诉你即使你标了private也不能保证这个private的真正做到“私有”,你私有的只是引用,而对象还能被其他引用关联
- 2楼网友:舍身薄凉客
- 2021-02-23 12:04
意思也许是,在同一个工程里,并不会因为在一个类中引用了私有的一个参照物而不能在其他的类中引用同一个参照物把它定义为公有的。(也许是说在一个类中的数据,在其他的两个类中引用,可以把他定义为私有的,也可以是公有的)。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯