抽象类:
public abstract class absclass {
private int x,y;
public absclass(int x,int y) {
// TODO Auto-generated constructor stub
this.x=x;
this.y=y;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return new String(x+" --------- "+y);
}
子类:
public class pc extends absclass {
public pc(int x,int y) {
// TODO Auto-generated constructor stub
super(x, y);
// x=x;
// y=y;
}
public void compute()
{
System.out.println("well this is pc");
System.out.println(this);
//for y=1;
}
主:
public static void main(String[] args) {
// TODO Auto-generated method stub
new pc(0, 2).compute();
}
为什么子类 pc 可以访问抽象类的私有成员 x,y ?根据继承规则,父类中的任何私有成员都不会继承到子类中,因此子类不应包含任何成员x,y。然而输出是:
0 --------- 2
答案 0 :(得分:4)
pc
无法访问x
和y
。它可以访问toString()
,因为它是一种公共方法。 toString()
可以访问x
和y
,因为它在absclass
中定义。
答案 1 :(得分:3)
没有。 toString()
继承自父类。由于您没有在子类中重写此方法,并且因为它可以访问父类的私有变量,所以在调用println时,它只是打印父类toString()
的输出。