C#抽象类和接口——基本讲解

一、抽象类(abstract)
1、抽象类用来列举一个类所需要的行为,但不去具体实现
2、必须有子类实现抽象类的抽象方法
3、抽象方法只指明方法的返回值类型,方法名和参数,但不提供方法的实现
4、有抽象方法的类必须定义为抽象类
5、子类使用override关键字重写父类的抽象方法
6、如果子类没有实现父类的抽象方法,那么子类也必须是抽象的

二、抽象类的构造方法
1、抽象类的构造方法不能被直接调用,只能由派生类的构造方法调用
2、派生自抽象的类需要实现基类的所有的抽象方法才能实例化

三、虚方法和抽象方法的不同
1、虚方法用virtual修饰,抽象方法用abstract修饰
2、虚方法必须有方法体,抽象方法不能有方法体
3、虚方法可以被子类override,抽象方法必须被子类override
4、虚方法可以写在除了密封类(sealed)外的所有类中,抽方法只能写在抽象类中

四、接口(更纯粹的抽象类)
1、语法:
[属性][访问修饰符] interface 接口名
{
    //接口主体
}
2、接口主体的特点:
(1)接口中只能声明方法、属性、索引器和事件
(2)接口中不能声明字段、构造方法、常量和委托
(3)接口的成员默认是public的,如果明确指定成员的访问级别会报编译错误
(4)接口中的所有方法、属性和索引器都必须没有实现
(5)C#中的接口需要以“I”开头
3、多重接口的实现(合并接口)
继承合并接口需要实现被合并的所有接口的方法

4、继承基类并实现接口
注意:如果一个类继承基类,必须先写继承的类再写接口

五、接口和抽象类的区别
相同点:
1、都不能被实例化
2、都包含有未实现的方法
3、子类必须实现所有未实现的方法
不同点:
1、接口使用interface关键字,抽象类使用abstract
2、子类可以实现多个接口,但是只能继承一个抽象类
3、接口直接实现方法,抽象类实现方法时需要使用override关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值