首先引入实例,假如我原先有一个诺基亚手机,丢失以后需换一个手机,那么为了使我能完全无障碍使用另一台手机,所有手机厂商都需要遵守同一个约定,即使用同一个接口,这里定义一个接口,把手机的功能简化为打电话、接电话、发短信、收短信。
interface IPhone
{
void Dai();
void PickUp();
void Send();
void Receive();
}
再创建两个手机类,如Nokia手机和Ericsson手机,这两个类均为IPhone的子类,继承Iphone接口,同时实现里面的四个抽象方法:
class NokiaPhone : IPhone
{
void IPhone.Dai()
{
Console.WriteLine("Nokia is calling...");
}
void IPhone.PickUp()
{
Console.WriteLine("Hello! This is Tim!");
}
void IPhone.Receive()
{
Console.WriteLine("Nokia message ring...");
}
void IPhone.Send()
{
Console.WriteLine("Good night!");
}
}
class EricssonPhone : IPhone
{
void IPhone.Dai()
{
Console.WriteLine("Ericsson is calling...");
}
void IPhone.PickUp()
{
Console.WriteLine("Hi! This is Tim!");
}
void IPhone.Receive()
{
Console.WriteLine("Ericsson is ring...");
}
void IPhone.Send()
{
Console.WriteLine("Good evening!");
}
}
接下来创建一个手机使用者类,使用者需要有一台手机,因此在这个类里创建一个私有字段,同时建一个构造器,定义一个使用手机的方法。
class PhoneUser
{
private IPhone _phone;
public PhoneUser (IPhone phone)
{
_phone = phone;
}
public void UsePhone()
{
_phone.Dai();
_phone.PickUp();
_phone.Receive();
_phone.Send();
}
}
此时便可以在主函数里调用这个接口来实现使用手机这一功能了
class Program
{
static void Main(string[] args)
{
PhoneUser user = new PhoneUser(new EricssonPhone()); //此处可以随意使用任意一个手机类
user.UsePhone();
}
}
运行结果如下:

全部程序如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InterFaceExample
{
class Program
{
static void Main(string[] args)
{
PhoneUser user = new PhoneUser(new EricssonPhone());
user.UsePhone();
}
}
interface IPhone
{
void Dai();
void PickUp();
void Send();
void Receive();
}
class NokiaPhone : IPhone
{
void IPhone.Dai()
{
Console.WriteLine("Nokia is calling...");
}
void IPhone.PickUp()
{
Console.WriteLine("Hello! This is Tim!");
}
void IPhone.Receive()
{
Console.WriteLine("Nokia message ring...");
}
void IPhone.Send()
{
Console.WriteLine("Good night!");
}
}
class EricssonPhone : IPhone
{
void IPhone.Dai()
{
Console.WriteLine("Ericsson is calling...");
}
void IPhone.PickUp()
{
Console.WriteLine("Hi! This is Tim!");
}
void IPhone.Receive()
{
Console.WriteLine("Ericsson is ring...");
}
void IPhone.Send()
{
Console.WriteLine("Good evening!");
}
}
class PhoneUser
{
private IPhone _phone;
public PhoneUser (IPhone phone)
{
_phone = phone;
}
public void UsePhone()
{
_phone.Dai();
_phone.PickUp();
_phone.Receive();
_phone.Send();
}
}
}
本文通过一个实例介绍了接口在编程中的应用,以手机为例,定义了一个IPhone接口,包括打电话、接电话、发短信和收短信等方法。接着创建了NokiaPhone和EricssonPhone两个类,分别实现该接口。最后通过PhoneUser类展示了如何使用接口实现不同品牌手机的无缝切换。此例突显了接口的多态性和抽象性在软件设计中的重要性。
1548

被折叠的 条评论
为什么被折叠?



