我正在学习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
课程中的y
和Child
(私人)? super
会改变什么吗?
答案 0 :(得分:1)
您无法访问x
课程中的y
和Child
。当你写
Child(int x, int y) {
super(x, y);
}
x
和y
是Child
构造函数的形式参数,恰好称为私有字段x
和{{超类的1}}他们可能会被称为其他东西 - 比如,y
和a
,效果将完全相同:
b
答案 1 :(得分:0)
为什么我在Child类中访问x和y(私有)?
你不这样做,如果你能做到没有问题:
System.out.println(c.x);
System.out.println(c.y);
你写了一些公共的setter / getters,它们允许你访问(封装)字段..