簡體   English   中英

子類設置方法不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM