接口的定义
与类不同的是接口用interface关键字
(1)接口中所有成员不能添加任何修饰符,默认为public,如果显示指定修饰符将会出现编译错误;
(2)接口中不能包含字段、运算符重载、实例构造函数和析构函数;
接口的继承
(1)类继承接口与类继承类是一样的,都使用: 继承多个接口后面用,分开;
class Test:IA,IB
{}
调用接口中的方法和隐式显式接口实现方式
(1)显式实现接口方法不能使用任何修饰符显式实现的成员都默认为私有
(2)采用隐式实现接口时类与接口都能访问接口中的方法;而采用显式实现接口时接口方法只能通过接口去访问,因此此时接口方法默认为私有的
(3)继承多个接口时显式的实现接口解决了命名冲突问题,这样能标识出那个方法属于那个接口
隐式:
using System;
namespace TestApplication
{
class Test
{
static void Main(string[] args)
{
IChinese Chinesespeak=new Speakers();
IEnglish Englishspeak=new Speakers();
Chinesespeak.speak();
Englishspeak.speak();
Console.ReadKey();
}
}
interface IChinese
{
void speak();
}
interface IEnglish
{
void speak();
}
class Speakers:IChinese,IEnglish
{
public void speak()
{
Console.WriteLine("Chinese");
}
}
}
运行结果为
显式:
using System;
namespace TestApplication
{
class Test
{
static void Main(string[] args)
{
IChinese Chinesespeak=new Speakers();
IEnglish Englishspeak=new Speakers();
Chinesespeak.speak();
Englishspeak.speak();
Console.ReadKey();
}
}
interface IChinese
{
void speak();
}
interface IEnglish
{
void speak();
}
class Speakers:IChinese,IEnglish
{
void IChinese.speak()
{
Console.WriteLine("Chinese");
}
void IEnglish.speak()
{
Console.WriteLine("English");
}
}
}
运行结果: