C#学习系列之抽象类和抽象方法

79 阅读2分钟

C#学习系列之抽象类和抽象方法


啰嗦

学习基础


抽象类

  • 抽象类的存在只有一个目的,被继承
  • 抽象类不能被实例化,用abstract修饰。
  • 抽象类可以包含抽象成员和普通成员,以及任意组合。
  • 抽象类的抽象成员在派生类中需要用override关键字实现。
访问修饰符 abstract class 类名 
{ 
    访问修饰符 abstract 返回值类型 方法名(参数列表); //定义抽象方法 
    其他类成员; 
}

抽象方法

abstract public void Func();

  • 在基类中如果使用abstract,不能有函数体,那么必须在派生类要用override进行重写。用虚方法可不用重写。因为没有函数体,必须重写。

  • 抽象成员:方法、属性、事件、索引。

  • 必须用abstract修饰符标记

  • 不能有实现代码块


使用

    class pet
    {
        public pet(string name)
        {
            _name = name;
        }
        protected string _name;
	    abstract public void speak();//没有函数体
    }
    class dog:pet
    {
        public dog(string name):base(name)
        {

        }
	    override public void speak()//重写
        {
            Console.WriteLine("");
        }
    }
    class cat : pet
    {
	    override public void speak();//重写基类的虚方法
    }

抽象类和具体类的区别

  • 抽象类不能实例化,具体类能实例化
  • 抽象类中不一定要有抽象方法,具体类中不能有抽象方法。
  • 抽象类可以和具体类一样,有具体方法。
  • 抽象类可以继承抽象类,子类如果不是抽象类,则必须重写抽象类中的全部抽象方法。
  • 在抽象类中,不能用private修饰抽象方法,因为抽象方法要被子类重写。
  • 在以下情况,一个类将成为抽象类:当一个类的一个或多个方法是抽象方法。当类是一个抽象类的子类,但是不能为任何抽象方法提供任何实现细节或方法实体。当一个类实现一个接口,但是不能为任何抽象方法提供任何实现细节或方法实体。

总结

学习记录

www.imooc.com/video/14228 blog.csdn.net/aruewds/art…