簡體   English   中英

從子類調用父方法,Java中的封裝問題

[英]Calling a parent method from a child class, encapsulation issues in Java

由於某種原因,我不知道如何進行編譯。 它無法在此行中找到setValue函數:'skill.get(“ Level”)。setValue(newLevel);'

import java.util.HashMap;

public class Stat extends GameObject
{
    int value;

    public Stat()
    {
        name = "Accuracy";
        value = 1;
    }

    public int getValue()
    {   
        return value;
}

    public void setValue(int newValue)
    {
        value = newValue;
    }
}


import java.util.HashMap; 

public class Skill extends Stat
{
    protected HashMap<String, GameObject> skill;

    public Skill()
    {
        name = "swords";
        description = "Learn how to master the art of swordmanship";
        skill.put("Level",new Stat("Level",1));
        skill.get("Level").setValue(newLevel);
    }
}

skill.get(“ Level”)是一個GameObject,而不是Stat。

可能setValue僅在Stat中定義,而不在GameObject中定義?

如果確定(例如,如果您用instanceof檢查或僅將Stat對象放入Skill-HashMap中),則可以將get的結果強制轉換為Stat對象,如下所示:

((Stat)skill.get("Level")).setValue(newLevel);

編輯:可能只是一個復制粘貼問題:您需要一個構造函數Stat(String,int)(感謝Subhrajyoti Majumder指出了這一點)

暫無
暫無

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

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