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

目录

  • 1. 定义
  • 2. 实例
  • 3. 接口的重新实现
  • 4. 接口和抽象类
  • 5. 总结

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. 总结

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

你可能感兴趣的:(C#,接口,多态,c#,类)