1

基本クラスの変数も持つ基本クラスのメソッドを呼び出したい:

    class BaseClass
    {
    public string BaseClassMethod()
    {
        if (CheckKeyboard(Keys.Up))
            return "Up";

        if (CheckKeyboard(Keys.Down))
            return "Down";

        if (CheckKeyboard(Keys.Enter) && keyboardOn == true) <-- keyboardOn is a variable from my BaseClass that i want to be able to use :/
        {
            counter = 0; <-- counter is also one of those variables
            return "Enter";
        }

        return "";
    }
    }

    class InheritFromBase : BaseClass
    {
    public string Update()
    {
        currentKeyboard = Keyboard.GetState();
        currentMouse = Mouse.GetState();

        if (BaseClassMethod() == "Up")
            if (selected > 0)
                selected--;
            else
                selected = buttonList.Count - 1;

        if (BaseClassMethod() == "Down")
            if (selected < buttonList.Count - 1)
                selected++;
            else
                selected = 0;

        if (BaseClassMethod() == "Enter")
            return buttonList[selected];

        previousKeyboard = currentKeyboard;
        previousMouse = currentMouse;

        return "";
    }
    }

私は別のクラスからメソッドを呼び出すので、変数(値)にアクセスしてから変更できないようです。助けてください:)ありがとう

4

4 に答える 4

0

protected アクセス修飾子を使用して、派生クラスから変数へのアクセスを許可できます。

例えば:

protected bool keyboardOn = false;

また

次のように、基本クラスのパブリック プロパティにすることができます。

 public bool KeyboardOn { get; set; }
于 2012-04-24T17:56:58.817 に答える
0

一般に、ローカル変数をクラスの外に公開することはお勧めできません。保護されたアクセス修飾子を介して行うことができますが、protectedプロパティまたはメソッドを介して公開することをお勧めします。

基本クラスのクラスレベル変数であると仮定しkeyboardOnます。

public class BaseClass
{
    private bool keyboardOn;

    protected bool KeyboardOn;
    {
        get
        {
            return this.keyboardOn;
        }
    }    
}    

public class InheritFromBase : BaseClass
{
    ....

    if(this.KeyboardOn)
    {
        // do something based on base property
    }

    ....
}

上記は、基本クラスからgetステータス変数のみを取得することを前提としています。keyboardOn継承クラスから変数の値も設定する必要がある場合はset、公開するプロパティに を追加できます。

于 2012-04-24T17:58:33.577 に答える
0

これらの変数をグローバルにし、基本クラスでアクセスできるようにする必要があります。公開する (しない) か、それを返す getter メソッドを作成する (する) 必要があります。次に、継承クラスで次のことを行います。MyBase.getVariable()変数を取得するかMyBase.function()、基本クラスで関数を呼び出します。

于 2012-04-24T17:58:41.097 に答える
0

次のように、スーパークラスに public getter を作成できます。

public bool isKeyboardOn() {
    return keyboardOn;
}

この方法では、変数を公開する必要がなく、変数を保護に設定する場合とは異なり、変数が他のクラスによって変更されるリスクがありません。

于 2012-04-24T17:59:06.073 に答える