Java超级私有字段

时间:2017-03-25 11:05:35

标签: java

我正在学习java继承和封装。这是示例代码

class Base {
  private int x;
  private int y;

  Base(int x, int y) {
      this.x = x;
      this.y = y;
  }

  public int getX() {
      return x;
  }

  public int getY() {
      return y;
  }
}

class Child extends Base {
  Child(int x, int y) {
    super(x, y);
  }
}

Child c = new Child(1, 2);
System.out.println(c.getX());

为什么我可以访问x课程中的yChild(私人)? super会改变什么吗?

2 个答案:

答案 0 :(得分:1)

您无法访问x课程中的yChild。当你写

Child(int x, int y) {
    super(x, y);
}

xyChild构造函数的形式参数,恰好称为私有字段x和{{超类的1}}他们可能会被称为其他东西 - 比如,ya,效果将完全相同:

b

答案 1 :(得分:0)

  

为什么我在Child类中访问x和y(私有)?

你不这样做,如果你能做到没有问题:

System.out.println(c.x);
System.out.println(c.y);

你写了一些公共的setter / getters,它们允许你访问(封装)字段..