【发布时间】:2021-08-16 03:35:14
【问题描述】:
通常,如果type 是名为Pass 的类的私有 成员,并且obj 是对Pass 类的对象的引用,我们不能使用obj.type,因为type 是 private 成员,因此会出错。
在copy() 方法中,a 作为参数传递,其中a 是对Pass 对象的引用。
按照同样的逻辑,我们也不应该被允许做a.type。
但是这段代码运行良好。为什么?这是我的疑问。
public class Main {
public static void main(String[] args) {
Pass ob1 = new Pass(10,'c');
Pass ob2 = new Pass(20,'f');
ob1.print();
ob2.print();
ob1.copy(ob2);
ob1.print();
ob2.print();
}
}
class Pass {
private int number = 0;
private char type = 'a';
public Pass(int i, char t) {
this.number = i;
this.type = t;
}
public void copy(Pass a) {
this.number = a.number;
this.type = a.type;
}
public void print() {
System.out.println(number + " =>" + type);
}
}
【问题讨论】:
-
private 意味着某些东西只能被同一类的东西访问。不仅来自同一个对象。
-
可见性修饰符描述 class 可见性,而不是 object 可见性。
-
他们不会在课堂外被访问。您混淆了“类”和“对象”(或“实例”)。
标签: java class private access-modifiers