返回信息流```
public class TestString {
private int a;
public TestString(TestString test){
this.a = test.a;
}
}
```
看String源码的时候看到类似的构造函数,对于TestString而言,a是私有变量,在同一个类中,是可以访问test.a的,在不同的类中,初始化TestString的话,是不能访问a的,所以private限制的到底是什么呢,为什么会这样?
这是一条镜像帖。来源:北邮人论坛 / java / #52350同步于 2016/8/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java private变量的访问问题
wyfive
2016/8/12镜像同步33 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
private就是限制只能在类内部访问啊,那个有参构造器,就是把另外一个TestString对象的私有成员变量拿过来,作为当前这个对像的私有成员变量
【 在 wyfive 的大作中提到: 】
: [md]```
: public class TestString {
: private int a;
:
: public TestStr
: .........
发自「贵邮」
【 在 iamluo 的大作中提到: 】
: private就是限制只能在类内部访问啊,那个有参构造器,就是把另外一个TestString对象的私有成员变量拿过来,作为当前这个对像的私有成员变量
:
: 发自「贵邮」
也就是说,在类的内部,可以访问同一个类的不同对象的私有属性,private控制的是类级别的访问,而不是对象级别的访问
并不是,那个构造器是public,参数是一个对象,才能通过这个对象间接访问它的成员变量
【 在 wyfive 的大作中提到: 】
:
: 【 在 iamluo 的大作中提到: 】
: : private就是限制只能在类内部访问啊,那个有参构造器,就是把另外一个TestString对象的私有成员变量拿过来,作为当前这个对像的私有成员
: .........
发自「贵邮」
这跟构造器是否public没有关系,构造器是private也依然可以访问。这里的问题是,这个参数是一个对象,在构造器中访问了这个对象的private属性。按你这样的理解,是不是下面这样写也是对的?
```
public class TString {
int a;
public TString(TestString ts){
this.a = ts.a;
}
}
```
【 在 iamluo 的大作中提到: 】
: 并不是,那个构造器是public,参数是一个对象,才能通过这个对象间接访问它的成员变量
:
: 发自「贵邮」
属性也可以用test.a表示吗?不可以吧
【 在 wyfive 的大作中提到: 】
: 这跟构造器是否public没有关系,构造器是private也依然可以访问。这里的问题是,这个参数是一个对象,在构造器中访问了这个对象的private属性。按你这样的理解,是不是下面这样写也是对的?
: [md]
: ```
: ...............