C#语言基础(接口)

这篇博客详细介绍了C#中的接口概念,包括接口的定义、命名规范、成员类型及接口间的继承关系。通过示例说明了如何实现接口以及显式接口成员的调用方式,强调了接口在多态和类继承中的重要作用。

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

### 一、接口的概念

接口是用来定义一种程序的协定,它好比一种模板,这种模板定义了实现接口的对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口的定义如下:

```
public interface IPartA
{
    void SetDataA(string dataA);
}
```

接口的命名通常以字母 I 开头,如 IpartA、IPartB。接口的成员可以是方法、属性、索引器和事件,但不可以有任何的成员变量,也不能在接口中实现接口成员。接口不能被实例化,接口的成员默认是公共的,因此不允许成员加上修饰符。

[【例](【例2.28】 接口演示.txt)**2.28**[】 接口演示。](【例2.28】 接口演示.txt)

运行结果如图2.38所示。

![1631428063970](C:\Users\86172\AppData\Roaming\Typora\typora-user-images\1631428063970.png)

程序中一共定义了两个接口和一个类。接口 IPartA定义方法 SetDataA,接口 IPartB 定义方法 SetDataB。接口之间也有继承关系,接口 IPartB 继承接口 IPartA,也就继承了接口IPartA的SetDataA方法。接口只能定义方法,实现要由类来完成。SharedClass类派生于接口IPartB,因此要实现IPartB的SetDataB方法,也要实现IPartA的SetDataA方法。 

接口允许多重继承:

```
interface ID:IA,IB,IC
{
    …
}
```

类可以同时有一个基类和零个以上的接口,并要将基类写在前面:

```
class ClassB:ClassA,IA,IB
{
    …
}
```

### 二、接口的实现

指出接口成员所在的接口,则称为显式接口成员。【例2.28】程序接口实现可改写成:

```
// 没有定义为public
void IPartA. SetDataA(string dataA)
{
    DataA=dataA;
    Console.WriteLine("{0}",DataA);
}
// 没有定义为public
void IParB.SetDataB(string dataB)
{
    DataB=dataB;
       Console.WriteLine("{0}",DataB); 
}
```

显式接口成员只能通过接口来调用。

```
class test
{
    static void Main()
    {
        SharedClass a = new SharedClass();
        IPartB partb = a;
        partb.SetDataA("interface IPartA");
            partb.SetDataB("interface IPartB");
    }
}
```

方法本身并不是类 SharedClass 提供的,像 a.SetDataA("interface IPartA")或 a.SetDataB ("interface IPartB")这样的调用都是错误的。显式接口成员没被声明为 public,这是因为这些方法都有着双重身份。当在一个类中使用显式接口成员时,该方法被认为是私有方法,因此不能用类的实例调用它。但是,将类的引用转型为接口引用时,接口中定义的方法就可以被调用,这时它又成为了一个公有方法。

[【例](【例2.29】 显式接口调用.txt)**2.29**[】 显式接口调用](【例2.29】 显式接口调用.txt)[。](【例2.29】 显式接口调用.txt)

运行结果如图2.39所示。

![1631428122358](C:\Users\86172\AppData\Roaming\Typora\typora-user-images\1631428122358.png)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值