[英]Subclass set-method not working
public class RectangleEx extends Rectangle
{
int height =0;
int width=0;
public RectangleEx(int height, int width)
{
super(height,width);
}
public RectangleEx()
{
super(0,0);
this.setHeight(5);
System.out.println(this.height);
}
}
誰能告訴我為什么在使用第二個構造函數創建新的RectangleEx時,其高度為0而不是5? 這是超類中setHeight的代碼:
public void setHeight(int height)
{
this.height = height;
}
這是由於實例變量隱藏。 由於您已經在子類中聲明了另一個具有相同名稱的變量height
,因此它將隱藏在超類中定義的變量height
。 因此,當您使用this.height
訪問變量時,將為您提供在子類中定義的height
值,而您根本沒有設置它。
電話:
this.setHeight(5);
調用超類的方法,該方法在超類本身中設置高度,而
System.out.println(this.height);
正在訪問RectangleEx
定義的height
,而不是Rectangle
,該height
仍為0。
如果要訪問超類的height
,請在超類中定義一個吸氣劑 ,它將返回超類變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.