的超級方法,讓我們說,我有類A
和延伸A
類B
, 這裏是類:返回`this`在繼承
答:
public class A {
public int x;
public static int y;
public A(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() { return x; }
public static int getY() { return y; }
public A get1() { return this; }
public A get2() { return new B(x, y); }
}
B:
public class B extends A {
public int x;
public B(int x, int y) {
super(x, y);
this.x = x*2;
this.y = y*2;
}
public int getX() { return x; }
public static int getY() { return y*3; }
public A get1() {
x++;
return super.get1();
}
public A get2() { return get1(); }
}
以下是主要功能:
public static void main(String[] args) {
A a1 = new A(5, 10);
A a2 = a1.get2();
A a3 = a2.get2();
System.out.println("a1.x=" + a1.x);
System.out.println("a1.y=" + a1.y);
System.out.println("a2.x=" + a2.x);
System.out.println("a2.getX()=" + a2.getX());
System.out.println("a2.getY()=" + a2.getY());
System.out.println("((B)a2).getY()=" + ((B)a2).getY());
System.out.println("((B)a2).x=" + ((B)a2).x);
System.out.println("a3 is A: " + (a3.getClass() == A.class));
System.out.println("a3 is B: " + (a3 instanceof B));
System.out.println("a3==a2: " + (a3 == a2));
}
我的問題是與a2
和a3
對象, a3
基本上是a2.get2()
,下面將達到返回this
的A
get1()
方法的方法之後。
由於該方法在A
我確信它只會參考參考返回對象a2
的A
一部分,而不是整個對象類,發現
所以,當我嘗試這條線: A3。 getClass()== A.class 我將得到True
。
當我調試a3.getClass()
是「B類」。
有人可以向我解釋return this
行在父類中的實際情況嗎?
謝謝!
什麼是'a2'和'a3'?你所說的'a3'基本上是'a2.get2()'。遵循該方法後,你的意思是什麼?請提供所有相關信息。 – CKing
那麼,忘記「我確信它只會返回對'A'部分的引用。 Java中沒有對象的部分引用。 – laune
請不要在沒有修改代碼的情況下發布諸如「我將獲得'True'」之類的語句。 – laune