c#中的接口的本质和作用

c#中接口

接口的修饰符 interface
接口命名规定用大写字母 I 开头,表示是一个接口。
例如:

interface IMyText{
	int Text1();
}

1.c#中接口的本质是一个特殊的抽象类。
2.因此接口有很多东西和抽象类一致。(点击进入抽象类)
----例如:在实现接口时,必须实现接口的每一个方法但是不能使用override。
3.接口中不能有字段,构造函数,只能有属性,方法,索引器和事件。
例如:

//不能有
int num;

4.接口成员一定是公共的,但接口成员不能有任何的访问修饰符,public也不行,而且接口成员不能有任何的代码体。
例如:

interface IText
{
	int Text(); //方法
	string SayHi()//属性这个和自动属性很像但是不是自动属性
	{
		get;
		set;
	}
}

5.接口成员不能实例化,泵用static,virtual,abstract,sealed修饰。
6.接口的目的也是为了实现多态的,接口能钩实现多重继承的问题。
例如:
有一个学生类,同时想 弹吉他 和 弹钢琴 当然可以写成这样

public class Student
{
	public void PlayGuitar(){}
	public void PlayPiano(){}
}

但是这样写有一个缺点,如果再有一个类想弹吉他,弹钢琴这两个方法又需要再写一遍,但是由于继承又只能是一个。因此就需要用接口多继承。

interface IPlayGuitar//弹吉他接口
{
	void PlayGuitar();
}
interface IPlayPaino()//弹钢琴接口
{
	void PlayPaino();
}
public class Student:IPlayGuitar,IPlayPaino    //学生类
{
	public void PlayGuitar(){}
	public void PlayPaino(){}
}

这只是一个最简单的例子,接口就相当于一个规范简单,让子类实现。


7.接口的显示实现。
如果在两个接口中的方法名恰好相同并且中同一个子类中实现,这个时候我问又想区分开两个接口不一样,我们就需要显示调用接口。
例如:

interface IText1//接口一
{
	void Text();
}
interface IText2//接口二
{
	void Text();
}
public class Fun:IText1,IText2
{
	public void Text()//隐式调用
	{
		Console.WriteLine("asd123");
	}
	void IText1.Text()//显式调用IText1的方法
	{
		Console.WriteLine("asd");
	}
	void IText2.Text()//显式调用IText2的方法
	{
		Console.WriteLine("123");
	}
}

注意显式调用不能写可访问呢修饰符。
8.显示接口只能使用接口引用掉用到,而隐式接口可以使用接口引用也可以使用类来调用。
例如:

// 下面的代码和上述代码有联系
//显示接口调用
IText1 t = new IText1();//只能通过这种方式调用使用接口名
t.Text();
//隐式调用有两种调用方法
Fun f = new Fun();//方法一
f.Text();
IText2 t = new IText2();
t.Text();

显示接口很少使用,只在上面那中极为特殊的情况下使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值