书本上有道例题是这样的:A.javapublicclassA{privateintx;publicvoidsetX(intX){this.x=x;}publicintgetX(){returnx;}}B.javapublicclassBextendsA{doubley=12;publicvoidsetY(inty)...
书本上有道例题是这样的:
A.java
public class A {
private int x;
public void setX(int X) {
this.x=x;
}
public int getX() {
return x;
}
}
B.java
public class B extends A {
double y=12;
public void setY(int y) {
//this.y=y+x; 非法,子类没有继承x
}
public double getY() {
return y;
}
}
Example5_2.java
public class Example5_2 {
public static void main(String args[]) {
B b=new B();
b.setX(888);
System.out.println("子类对象未继承的x的值是:"+b.getX());
b.y=12.678;
System.out.println("子类对象的实例变量y的值是:"+b.getY());
}
}
输出的结果是:
子类对象未继承的x的值是:888
子类对象的实例变量y的值是:12.678
--------------------------------------------------------------------------------------
我是这样想的:这题中的b对象是没有继承x的,那么class A当中的this虽指向的是对象b,但是b却不能用this关键字来调用x,也就是说b.x是不存在的,因为x的权限是prinvate,所以我觉得局部变量x赋予this.x的值是没有任何意义的。那么getX()里的return x 返回的应该是默认值0,但答案却是888,我真的搞不清楚为什么b没有继承x,但却可以用this关键字来调用x呢,this.x就等于b.x,但b.x不存在,难道不是这样的吗,请各位高人指点一下小弟吧。小弟感激不尽啊
展开