C# 抽象类

来源:互联网 发布:淘宝账号在哪看到 编辑:程序博客网 时间:2024/06/05 15:05

一、抽象类 和 抽象方法 ——  abstract

1.用 abstract 修饰的方法叫做抽象方法

2.含有抽象方法的类,也必须是 abstract 修饰的,我们称之为 抽象类

3.使用场景:无了表述抽象的概念,不与具体的事物相联系,只作为派生类的基类使用,通常是用来描述所有子类的共同特征

4.注意:

4.1抽象方法只做声明,而不包含实现,抽象方法需要在继承以后实现,所以必须public 

4.2抽象类不可以被直接实例化

4.3抽象类中可以没有抽象方法和抽象属性,但是一旦有了抽象方法,就一定要把该类声明为抽象类

4.4如果抽象类的派生类不是抽象类,那么必须要重写抽象类的所有抽象方法


比如:

// 新建一个Animal类
    abstract class Animal
    {
        // 添加一个抽象方法
        public abstract void Eat();
        // 可以添加非抽象的方法 
        public void Play(){
            Console.WriteLine ("动物都爱玩");
        }
    }

    // 创建一个抽象类,cat,继承自Animal
    abstract class Cat:Animal
    {
        // 可以不实现抽象方法
    }


    // 创建一个wolf类,继承自Animal
    class Wolf:Animal
    {
        // 普通类继承自抽象类,必须实现抽象方法
        public override void Eat ()
        {
            Console.WriteLine ("我要吃喜洋洋");
        }
    }

    // 创建一个Dog类,继承自Animal
    class Dog:Animal
    {
        public override void Eat ()
        {
            Console.WriteLine ("狗吃骨头");
        }
        // 添加一个虚方法
        public virtual void Sleep(){
            Console.WriteLine ("睡得比狗晚");
        }

    }

    // 添加一个哈士奇类

    class Husky:Dog
    {
        // 重写虚方法
        public override void Sleep ()
        {
            Console.WriteLine ("起得比鸡早");
        }
    }


5. 很多像我一样的初学者可能经常搞错 抽象方法和虚方法接下来说一下抽象方法和虚方法的区别

5.1抽象方法必须在抽象类中

5.2抽象方法在父类中不能实现,虚方法可以

5.3抽象方法在非抽象类中必须实现,而虚方法就可以实现也可以不实现




0 0
原创粉丝点击