打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C#抽象类

abstract修饰符可以和类、方法、属性、索引器及事件一起使用,在类声明中使用abstract修饰符以表明这个类只能是其他类的基类。

抽象类的特性

(1)抽象类不能被实例化

(2)抽象类可以包含抽象方法和抽象访问器

(3)不能用sealed修饰符修改抽象类,因为抽象类本身就是用来给其他类继承的

(4)抽象类的非抽象子类必须实现其继承的所有抽象方法和抽象访问器

抽象方法

(1)抽象方法是隐式的虚方法

(2)抽象方法只允许声明在抽象类中

(3)抽象方法不能提供实际的实现,所以没有方法体;抽象方法的实现是在非抽象的派生类中以override重写实现的

(4)抽象方法声明中不可以使用static或者virtual修饰符

(5)abstract关键字不能修饰静态方法或静态属性

抽象类的构造函数

(1)不要再抽象类中定义public或protected internal访问权限的构造函数

(2)应在抽象类中定义protected或private访问权限的构造函数

(3)如果在抽象类中定义一个protected构造函数,则在实例化派生类时,基类可以执行初始化任务

抽象方法和虚方法的区别

虚方法有实现部分,并且派生类对其重写是可选的;抽象方法没有实现部分,并且强制非抽象派生类对其重写

 

重写虚方法例子中的代码,改为抽象的方式实现

using System;using System.Collections;//抽象类public abstract class Animal{    protected string face;    //声明为protected的构造函数,在实例化派生类时,基类可以执行初始化工作    protected Animal() { this.face = "^_^"; /*抽象类构造函数初始化的例子*/}    public abstract void eat();    public abstract string Face    {        get;    }}public class dog : Animal{    //重写基类中的抽象访问器Face    public override string Face    {        get        {            return face;        }    }    //重写基类中的抽象方法eat    public override void eat()    {        Console.WriteLine("狗吃骨头 " + Face);    }}public class cat : Animal{    public override string Face    {        get        {            return face;        }    }    public override void eat()    {        Console.WriteLine("猫吃鱼 " + Face);    }}public class panda : Animal{    public override string Face    {        get        {            return face;        }    }    public override void eat()    {        Console.WriteLine("熊猫吃竹子 " + Face);    }}public class MainFun{    static void Main()    {        Animal[] anim = new Animal[3];        anim[0] = new dog();        anim[1] = new cat();        anim[2] = new panda();        anim[0].eat();        anim[1].eat();        anim[2].eat();        Console.ReadKey();    }}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#部分关键字归纳
new、abstract、virtual、override,sealed关键字区别_jas...
C#中修饰符用法“virtual(虚拟函数)、override(重载函数)、static(...
C# 类中方法、属性、事件的类型关键字使用方法
漫谈.Net关键字系列之一Sealed与Final
c#中abstract、override、new、virtual、sealed使用和示例 .
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服