C#语法之定义接口和抽象类

本文详细阐述了抽象类与接口的概念及其主要区别,包括抽象类的特性、如何使用抽象类及其实例化限制,以及接口的功能和实现方式。此外还讨论了两者之间的六大差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       抽象类是abstract修饰符用于表示所修饰的类是不完整的,并且只能用做基类。抽象类和非抽象类的不同点:

     抽象类不能直接实例化。虽然一些变量和值编译时类型可以是抽象的,但是这样的变量和值必须为null,或者含有对非抽象类的实例的引用(此非是从抽象派生出的)。

   当从抽象派生非的时候,这些非必须具体实现所继承所有的抽象成员,从而重写那些抽象成员。

     abstract class A

      { publish abstract void F();}

    abstract class B:A            B为抽象类,所有他不用提供F的实现

      {public void G();}               

      class C:B                         C继承A B的所有抽象成员,并且提供一个具体实现

       {

      publish override void F()

     {//actual implementation of F}

       }

     由于C中没有抽象成员,所以可以,但不是必须将C声明为非抽象类。

          接口

接口可以拥有静态成员、嵌套类型、抽象、虚拟成员、属性和事件。实现接口的任何类都必须提供所声明的抽象成员的定义。

他和抽象类的区别:

1) 接口不能有非抽象方法,但抽象类可以

2)一个类可以实现多个接口,但只能有一个父类

3)接口不属于继承结构,他实际于继承无关,因此无关的类也可以实现同一个接口

4)抽象类是一个不完整的类,需要进一步细化;而接口只是个行为的规范

5)接口基本不具备任何基本特点,他只是承诺了能调用的方法

6)接口可以支持回调,但是继承不行。用于回调的接口只是提供指向方法的指针,而且是类型安全的指针方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值