概述:C#中的类不支持多重继承,但可以通过接口来实现多重继承的功能。
接口的4种成员类型分别为:方法、属性、事件、索引器,但是只能定义,不能设置它们的具体值,且接口中不包含方法的具体实现
特别注意不包含字段
特征:类似于抽象基类,即继承接口的任何非抽象类型都必须实现接口的所有成员
类和结构可从多个接口继承
接口自身可从多个接口继承
声明:修饰符 interface 接口名称:继承的接口列表
{ 接口内容 }
注:接口声明时,除interface关键字和接口名称外,其他都是可以缺省的
可以用new.public.protected.internal.private等修饰符声明接口,但接口成员必须是public
接口的实现与继承:
namespace _Interface
{
interface IPeople
{
string Name { get; set; }
string Sex { get; set; }
}
interface ITeacher : IPeople //继承公共接口
{
void teach();
}
interface IStudent : IPeople
{
void study();
}
class Program:IPeople ,ITeacher ,IStudent //多接口继承
{ string name = "";
public string Name { get { return name; } set { name = value; } }
string sex = "";
public string Sex { get { return sex; } set { sex = value; }
}
public void teach()
{
Console.WriteLine(Name +""+ Sex+"教师");
}
public void study()
{
Console.WriteLine(Name + "" + Sex + "学生");
}
static void Main(string[] args)
{
Program program = new Program();//实例化对象
ITeacher iteacher = program; //使用派生类对象实例化接口ITeacher
iteacher.Name = "TM";
iteacher.Sex = "男";
iteacher.teach();
IStudent istudent = program; //使用派生类对象实例化接口IStuent
istudent.Name = "C#";
istudent.Sex = "男";
istudent.study();
Console.ReadLine();
} } }
显示接口成员的实现:
如果类实现两个接口,且两个接口包含具有相同签名的成员,那么在类中实现 该成员将导致两个接口都使用该成员作为它们的实现。若两个接口成员实现不同的功能,则可能出错。此时可以显示地实现接口成员,即创建一个仅通过该接口调用并且特定于该接口的成员。显示接口成员实现是使用接口名称和一个句点命名该类成员来实现的。
示例代码如下:namespace _显示接口的实现
{
interface myInterface1
{
int Add();
}
interface myInterface2
{
int Add();
}
class myClass : myInterface1, myInterface2
{
int myInterface1.Add() //显示接口成员的实现
{
int x = 3;
int y = 5;
return x + y;
}
int myInterface2.Add() //显示接口成员的实现
{
int x = 3;
int y = 5;
int z = 7;
return x+y+z;
}
}
class Program
{
static void Main(string[] args)
{
myClass myclass=new myClass (); //实例化接口继承类的对象
myInterface1 myInterface1=myclass ; //使用接口继承类的对象实例化接口
Console.WriteLine(myInterface1.Add()); //使用接口对象调用接口中的方法
myInterface2 myInterface2 = myclass;
Console.WriteLine(myInterface2 .Add());
Console.ReadLine();
}
}
}