我想从我的基类调用一个方法,该方法也有一个来自基类的变量:
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 "";
}
}
因为我从另一个类调用了mothod,所以似乎无法访问变量(值)然后更改它们。 请帮忙:)谢谢
答案 0 :(得分:0)
您可以使用protected
access modifier来允许从派生类访问变量。
例如:
protected bool keyboardOn = false;
OR
您可以将它们设为基类的公共属性,如下所示:
public bool KeyboardOn { get; set; }
答案 1 :(得分:0)
在类外部公开局部变量通常是不好的做法。您可以通过protected访问修饰符来执行此操作,但我建议您通过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
。
答案 2 :(得分:0)
您需要将这些变量设置为全局且可在基类中访问,方法是将它们设为public(不)或编写返回它的getter方法(do)。然后在继承类中,执行:MyBase.getVariable()
获取变量,或MyBase.function()
调用基类中的函数。
答案 3 :(得分:0)
您可以在超类中创建一个公共getter,如下所示:
public bool isKeyboardOn() {
return keyboardOn;
}
通过这种方式,您不必公开变量,并且不像将变量设置为protected,您不会冒任何其他类更改变量的风险。