簡體   English   中英

如何在子類方法Java中調用超類變量

[英]How to call superclass variable in a subclass method java

我有一個名為User的抽象類,以及一個擴展了User的名為Staff的子類。 User類包含一個方法:受保護的抽象void setId(String newId){}:在User類中設置私有變量“ id”。 所以我的問題是,當我去在Staff類中創建setId()方法時,如果它是私有的,我該如何在User類中引用它? 據我所知,'id'變量不能設置為受保護。 感謝任何能提供幫助的人!

@Override
public void setId(String newId){
    if(checkValidId(newId)){
       ????
    }
}

您可以在User類中創建setId方法,並通過Staff類進行訪問。

public abstract class User{

...
   public void setId(String id){
      this.id=id;
   }

}

public class Staff extends User{

...


   public void setStaffId(String newId){
       if(checkValidId(newId)){
          setId(newId);
       }
   }

}

您應該在名為getID()的超類中創建一個getter方法,該方法僅返回'this.id'。 可以從擴展抽象類的任何類中調用該方法,並且可以使用該方法從id字段中獲取值。 如果那是您的目標:)

重要的是要注意,您可以執行此操作,因為無論何時要為Staff構造一個新對象,構造函數中的第一行都必須在User中調用構造函數以設置必填字段。 例如在這種情況下的id字段。

下面是一個有效的示例,該示例從值5開始動態設置ID。您可以運行它來確認結果,也可以查看下面所附的屏幕截圖。

abstract class User{
    static int count = 5; 
    private int id; 

    public User(){
        this.id = count++; 
    }

    public int getID(){
        return this.id; 
    }
}

class Staff extends User{
    public Staff(){
        super();
    }
    public int getID(User x){
        return super.getID(); 
    }
}

public class Program {
    public static void main(String[] args){
        Staff x = new Staff(); 
        System.out.println(x.getID()); 
    }
}

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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