c# - 类继承/方法覆盖

标签 c# class inheritance overriding

这是我第一次使用类,所以请原谅我的无知。

我有一个 Pet 类,它是我的基类。我有两个 child 类,狗和猫。我想要做的是让 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()' 时无法更改访问修饰符”

我做错了什么?我知道这与某处的保护级别有关,我一直将事情从公共(public)切换到 protected 或私有(private),但它没有解决任何问题。有人帮忙吗?

最佳答案

由于 Speak() 最初是公开的,因此您需要将其保持公开。您“无法更改访问修饰符”(公共(public)与私有(private))。

此外,您不能覆盖非虚拟或静态方法。 重写的基方法必须是虚拟的、抽象的或重写的。

阅读:http://msdn.microsoft.com/en-us/library/ebca9ah3(v=vs.100).aspx

关于c# - 类继承/方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13675787/

相关文章:

Ruby 类方法设置

c# - 创建 HttpClient 帮助器方法的问题

c# - 是否可以减少我在此代码中使用的构造函数的数量?多个类的构造函数重载和转发

c# - 我如何告诉 VS 2008 停止在我的文件前面放置字节顺序标记?

c++ - 此类设置是否违反 Liskov 替换原则

java - 子类化泛型 - 构造函数继承

java - 如何确定对象的类别?

C# WPF : Changing current tab with button click?

c++ - 主要 C++ 的类问题

php - 在类中包含类是不好的做法吗?