博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#抽象类和接口
阅读量:5332 次
发布时间:2019-06-14

本文共 986 字,大约阅读时间需要 3 分钟。

抽象类和接口有什么区别?有了抽象类为什么还要接口?

接口和抽象类的相同点是都不能实例化,不同点是接口中的方法都没有方法体,而抽象类则不然,除了抽象方法没有方法体外,其他方法都有方法体。

原因是:在C#中,类只能继承一个类,但可继承多个接口。

抽象类:

1、不能实例化

2、抽象方法必须被子类重写

3、如果类中包含有抽象方法,该类必须定义为抽象类

抽象类前加abstract。

抽象方法在返回值前加abstract,没有方法体,直接在括号后加分号。

1、包含有抽象方法的类一定为抽象类

2、抽象类不一定包含抽象方法

 

虚方法是用来实现多态的,为了使子类的实例完全接替来自父类的成员,父类必须将该成员声明为虚拟的,这是通过在该成员的访问类型前加virtual关键字来实现的。

子类可以选择使用override关键字将父类实现替换为它自己的实现,这就是方法重写,当然也可以不重写。

class Animal{    public virtual void Shout()    {        Console.WriteLine("动物叫!");    }}class Cat:Animal{    public override void Shout()    {        Console.WriteLine("猫叫!");    }}class Dog: Animal{    public override void Shout()    {        Console.WriteLine("狗叫!");    }}class Program{    static void Main(string[] args)    {        Animal[] animals=new Animal[2];        animals[0]=new Cat();        animals[1]=new Dog();        foreach (var animal in animals)        {            animal.Shout();        }        Console.ReadLine();    }}

 

转载于:https://www.cnblogs.com/NaughtyBaby/p/4313388.html

你可能感兴趣的文章
寻找子串位置 codevs 1204
查看>>
Flex 学习笔记 XML对象(转)
查看>>
个人简历
查看>>
Django学习笔记1
查看>>
异常处理
查看>>
Hibernate_继承映射的方法详解
查看>>
Asp.net中web.config配置文件详解
查看>>
shell脚本-5
查看>>
Temporary Post Used For Style Detection (3c95477f-54ce-474a-9e30-42586362b375)
查看>>
C 语言实例 - 连接字符串
查看>>
视觉slam十四讲学习笔记——Cmake入门
查看>>
selenium常用API实例
查看>>
【CSS】关于content
查看>>
30道面试题有答案
查看>>
IDEA的dto、mapper、mapping文件自动生成
查看>>
HTTP协议详解
查看>>
centos7.2下安装mysql5.7,使用rpm包安装
查看>>
JavaScript中数字与字符串相互转化
查看>>
2013 duilib入门简明教程 -- VS环境配置(2)
查看>>
Hacklab综合关
查看>>