C# 抽象类

半世苍凉 提交于 2020-01-07 04:23:00

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

抽象类

抽象类是对类的进一步抽象,上一篇中我们定义的Animal类中,可定义为抽象类。

using System;

namespace Jerry
{
    abstract class Animal
    {
        public string name;
        public int age;

        public abstract void Eat();

        public abstract void Sleep();
    }

    class Dog : Animal
    {
        public override void Eat()
        {
            Console.WriteLine("吃骨头");
        }

        public override void Sleep()
        {
            Console.WriteLine("在床肚睡觉");
        }
    }

    class Cat : Animal
    {
        public override void Eat()
        {
            Console.WriteLine("吃鱼");
        }

        public override void Sleep()
        {
            Console.WriteLine("在床上睡觉");
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            Animal cat = new Cat();
            cat.name = "狸花猫";
            cat.age = 1;
            cat.Eat();
            cat.Sleep();

            Animal dog = new Dog();
            dog.name = "旺财";
            dog.age = 2;
            dog.Eat();
            dog.Sleep();
        }
    }
}

使用Abstract关键字修饰的类叫做抽象类。

抽象类具有几大特点:

抽象类不能被实例化,主要用于被继承;抽象类里可以包含两种抽象成员,分别是抽象方法声明和抽象属性,同时可以包含其他非抽象成员;

如果继承抽象类,则需实现抽象类的抽象方法和属性;

不能使用Sealed关键字修饰抽象类,因为Sealed意味着不能被继承,同样Static也不能用于修饰抽象类,因为Static意味着会有一个实例。

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类也是一个模板,只是这个模板只有定义,并没有具体实现而已,当我们一个非抽象类继承抽象类时,子类要将这些没有定义的要写清楚而已。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!