我有两个A和B类如下:
public class A {
private int salary = 0;
protected void calculate() {
salary = 400;
}
protected A() {
calculate();
}
}
public class B extends A {
private int salary = 0; // (1)
protected void calculate() {
System.out.println("calculating salary...");
salary = 700;
}
public static void main(String[] args) {
System.out.println(new B().salary); // (2)
}
}
Run Code Online (Sandbox Code Playgroud)
考虑第(2)行:我不明白为什么new B().salary有效,因为第(1)行中的工资的说明符是private.你能帮我解释一下吗?
您可以访问,B.salary因为您的代码在类中执行B.
private实际上(或所有访问修饰符)的一个常见误解是它基于每个对象的行为,这是不正确的.一个private字段对整个类都是私有的.因此每个实例都B可以访问salary每个其他B对象的字段.甚至static代码都B可以做到这一点.
另外请注意,通过介绍课程,你不必要地使事情变得复杂A:它对你的例子没有实际影响,你可以简单地把它留下来.
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |