这是我第一次使用类,所以请原谅我的无知。
我有一个宠物类作为我的基类。我有两个子类,狗和猫。我想做的是让猫和狗的方法覆盖宠物方法,并用“汪!汪!”和“喵!喵!”代替说话。然后在另一个表单中,当按下按钮时,需要打印信息(名称、颜色和他们说话的内容)。
class Pet
{
protected string name, color, food;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public string Color
{
get
{
return color;
}
set
{
color = value;
}
}
public string Food
{
get
{
return food;
}
set
{
food = value;
}
}
public void speak(string s)
{
s = "Speak";
MessageBox.Show(s);
}
public Pet(string name, string food, string color)
{
//Constructor
this.Food = food;
this.Name = name;
this.Color = color;
}
class Dog : Pet
{
public Dog(string name, string food, string color)
: base(name, food, color)
{
}
protected override void speak()
{
}
}
}
(由于猫和狗差不多,所以省略了猫)
我一直收到错误信息:“错误 1 'Lab12.Cat.speak()': 无法更改覆盖 'public' 继承成员 'Lab12.Pet.speak()' 的访问修饰符”。
我做错了什么?我知道这与保护级别有关,在 public、protected 或 private 之间切换,但仍然无法解决问题。请帮帮我,有人可以帮忙吗?
Pet
有public virtual void speak(string s)
,那么Dog
必须有public override void speak(string s)
。请参见乔的链接。 - Edmund Schweppe