接口和抽象类

接口可由方法、属性、事件、索引器或这4种成员类型的组合构成。

接口的主要特点是只有声明部分,而没有实现部分。和类一样,接口也定义了一系列属性、方法和事件等。
但与类不同的是,接口本身并不提供接口成员的实现,而是在继承接口的类中实现,并在类中被定义为单独的实体。

接口所具有的属性包括以下特点:
❤接口类似于抽象类,继承接口的任何非抽象类型都必须实现接口的所有成员。
❤接口不能包涵字段而且接口中的成员一定是公共的。
❤接口类型不能直接实例化。
❤接口具有方法名,但不包含方法的实现。
❤类和结构可从多个接口继承,接口自身可从多个接口继承。


接口是使用interface关键字来声明的。用来声明接口的语法格式为:
[访问修饰符] interface 接口名称
{
//接口体
}

接口不包含任何实现,说明接口有以下几点限制:
❤不允许在接口中实现任何字段,即使是static字段。字段本质上是类或结构的一种实现细节。
❤不允许在接口中包含任何构造函数。构造函数也被认为是类或结构的一种实现细节。
❤不允许在接口中包含任何析构函数。析构函数包含用于析构[销毁]一个对象实例的语句。
❤不允许包含任何方法、指定方法修饰符。
❤不允许在接口中嵌套任何类型(如枚举类型、结构类型、类类型或接口类型)。
❤不允许从接口或类中继承一个接口。

C#语言只允许有一个被继承的类,但是在接口中,可以通过接口实现多继承。


抽象类使用abstract关键字修饰,用于表示所修饰的类是不完整的,即类中的成员不一定都能实现。抽象类只能做基类。抽象类与非抽象类具有以下主要不同之处。
❤抽象类不能被直接实例化,只能在扩充类中通过继承使用,对抽象类使用new运算符会产生编译错误。
❤抽象类可以包含抽象成员,而非抽象类不能包含抽象成员。当从抽象类派生非抽象类时,这些非抽象类必须实现所继承的所有抽象成员。

声明方法:在类的定义中将关键字abstract置于关键字class之前。
例:public abstract class A
{
//类成员
}

抽象类定义抽象方法:

public abstract class A
{
public abstract void DoWork(int K);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值