C#接口和抽象类

1.接口:

接口中所有的方法都没有实现,只有声明;(接口更加像契约模式,继承接口的类必须按照一种固定模式来实现接口的方法)

接口的定义:
访问权限 interface I接口名
{

}
注意:1.接口中只能有属性和方法(只有声明没有定义),不能有字段;
           2.成员不需要写访问权限,一定为public;
           3.接口可以被接口(不需要实现父接口的方法)或类(如果不是抽象类,必须显式实现接口的所有方法)继承,可以多继承;
           4.接口不能被实例化,但是可以创建接口的引用;


2.abstract抽象类:

(不能被实例化,但是可以创建抽象类的引用)
抽象方法:1.在函数返回值前加上abstract关键字(不需要实现)
抽象类:第一种情况:直接在class关键字前加上abstract关键字(可以没有抽象方法)
              第二种情况:类中函数一个或一个以上抽象方法的类,必须为抽象类;

//形状类
public abstract class Shape //Shape抽象类
{
	public abstract float GetArea();//抽象方法:C++的纯虚函数
	public virtual float getLength() //虚函数,不是抽象函数
	{
		return 0;
	}
}


接口和抽象类的区别:
1.接口是设计的结果,抽象类是重构的结果;
2.接口可以多继承,类只能被单继承;
3.接口不能有字段,抽象类可以有字段;
4.接口中的所有方法都没有实现,抽象类中可以有不是抽象的方法;
5.接口中的所有方法都必须为public,抽象类可以不需要;
6.如果一个类继承于接口,必须实现接口中的所有方法;
  如果一个类继承于抽象类,如果不实现抽象类的方法,则继续为抽象类;

接口和抽象类的用途区别:

接口
  1. 规范和约束:接口用于定义一组方法和属性的约定,任何实现该接口的类必须提供这些方法和属性的实现。
  2. 松耦合:接口可以降低代码之间的耦合度,使得代码更加灵活和可维护。例如,依赖注入通常使用接口来实现。
  3. 多态性:接口允许不同的类以相同的方式被使用,实现多态性。
抽象类
  1. 代码复用:抽象类可以提供通用的实现,派生类可以继承这些实现,从而减少代码重复。
  2. 模板模式:抽象类可以定义一个算法的骨架,并将一些步骤延迟到子类中实现。
  3. 强约束:抽象类可以提供更强的约束,确保派生类实现特定的逻辑或属性。

区别总结
  • 实现:接口不能包含方法的实现,抽象类可以包含。
  • 继承:一个类可以实现多个接口,但只能继承一个抽象类。
  • 用途:接口适用于定义一组不相关类的共同契约,抽象类适用于具有相似实现的类的代码复用和强约束。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值