C#学习入门(五)—— 接口

1. 定义

 在实际生活中,经常能看到各种各样的接口,如常见的手机充电接口有三种,分别是MicroUSB插口,Type-C插口,Lightning接口。然而我们并不清楚其内部的原理,也不用清楚,我们只需要会用它就行了。
 简单来说,在面向对象程序设计中,接口就是一个不能实例化,且只能拥有抽象方法的类型。在C#中,接口的声明属于类型说明,声明接口时使用interface关键字。

2. 实例

接口的基本语法:

接口修饰符 interface 接口名称 : 基接口名称列表
{
    接口的成员方法、属性等;
}

定义一个IPerson接口:

public interface IPerson		//声明接口
{
	void Walk();	//走的方法
	void Talk();	//说话的方法
}

 接口不能实例化,且只能有抽象的方法。接口的实现需要通过新建一个类继承它,并实现它的抽象方法。这里创建了Worker类,继承了IPerson接口,并实现它的方法。

public class Worker : IPerson
{
	public void Walk()
	{
		Console.WriteLine("实现接口的Walk()");
	}
	public void Talk()
	{
		Console.WriteLine("实现接口的Talk()");
	}
}

 接口可以创建一个引用变量,指向实现接口类的对象

IPerson person = new Worker();

3. 接口的重新实现

接口的重新实现是指基类已实现接口,其派生类再一次实现接口。这样,使用基类引用访问派生类,会实现派生类实现接口的代码。

//接口
interface II
{
    void X();
    void Play();
}
/类B继承接口II
class B : II
{
    public void X()
    {
        Console.WriteLine("B:X()");
    }
    public void Play()
    {
        Console.WriteLine("B:Play()");
    }
}
//类C继承B和接口II,重写了接口Play()方法
class C:B,II
{
    public new void Play()
    {
        Console.WriteLine("C:Play()");
    }
}

//main
static void Main(string[] args)
{
	C c = new C();
	II f = c;
    f.X();//输出:B:X()
    f.Play();//输出:C:Play()
}

派生类C重新实现了接口方法Play(),那么调用时将调用派生类的Play()方法。

4. 接口和抽象类

(1)接口与抽象类都不能直接实例化
(2)派生类只能继一个抽象类,实现接口的类可以实现多个接口
(3)抽象类用于关系密切的对象,侧重于is_a关系,比如老虎是动物,老虎继承动物这一抽象类。接口为不相关的类提供通用功能,侧重于Can_do。蜜蜂和蝙蝠这两个动物类均实现了Fly()接口。
(4)抽象类多定义对象的属性,接口多定义对象的行为。

5. 总结

 接口的使用,能够使得代码更加精简,调用起来更加方便。熟练使用接口,并和抽象类区别,能够将多个类联系起来,这对于代码的管理是十分方便的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗夜无风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值