这是我第一次与课程一起工作,所以请原谅我的无知。
我有一个 Pet 类,它是我的基类。我有两个儿童班,狗和猫。我想做的是让 Cat 和 Dog 方法通过说“Woof!”来覆盖 Pet 方法。和“喵!”而不是说话。然后,在另一种形式中,我必须在按下按钮时打印信息(名称、颜色和他们的讲话)。
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()' 时无法更改访问修饰符”
我究竟做错了什么?我知道这与某处的保护级别有关,并且我不断将事物从公共切换到受保护或私有,但这并不能解决任何问题。帮忙,有人吗?
由于 Speak() 最初是公开的,因此您需要将其保持公开。您“无法更改访问修饰符”(公共与私有)。
此外,您不能重写非虚拟或静态方法。重写的基方法必须是虚拟的、抽象的或重写的。
读一读:http://msdn.microsoft.com/en-us/library/ebca9ah3(v=vs.100).aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)