簡體   English   中英

訪問子類中的私有超類字段

[英]Accessing private superclass field in subclass

我知道超類中的私有字段不被子類繼承,但我的任務要求我從子類訪問私有字段。 它有一個 getter 方法,問題來自直接在子類方法之一中引用私有變量:

protected void userPicksUp(Player player) {
    System.out.println("What would you like to pick up?");
    Scanner keyboard = new Scanner(System.in);
    String itemToPickUp = keyboard.nextLine();
    if (Utilities.isItemInContainer(itemToPickUp, getRoomObjects())) {
        player.addToInventory(itemToPickUp);
        roomObjects = Utilities.removeFromList(itemToPickUp, getRoomObjects());
    } else {
        System.out.println("That item is not in the room");
    }
}

我不知道如何從這個子類方法的超類訪問 roomObjects。 我無法為此作業創建任何新字段。 我還為子類的構造函數使用了 super(),並且 roomObjects 隨之而來,所以我真的不明白如果它是我的子類構造函數的一部分,為什么我不能訪問它?

如果我理解正確,您的超類中有一個私有字段您無法訪問,因為它由於 inheritance 甚至關聯不可用。

Utilities.isItemInContainer(itemToPickUp, getRoomObjects()我認為在這里,需要您訪問該私有字段的功能不應該屬於此 class 或實用程序 class。它應該屬於您傳遞 itemToPickUp 的超類。您可以間接調用它來自實用程序 class 以使其清潔。

私有方法是這樣的,因此該值不會在 class 之外的 go ,因此您需要圍繞它編寫方法,根據要求公開一些功能。 這是封裝。 您的數據是隱藏的,一個私有字段是有原因的。

暫無
暫無

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

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