接口通过类继承来实现,一个类虽然只能继承一个基类,但可以继承任意接口。声明实现接口的类时,需要在基类列表中包含类所实现的接口的名称。

例1

创建一个控制台应用程序,该程序在例1 的基础上实现,Program 类继承自接口 ImyInterface,并实现了该接口中的所有属性和方法。然后在 Main 方法中实例化 Program 类的一个对象,并使用该对象实例化 ImyInterface 接口。最后通过实例化的接口对象访问派生类中的属性和方法。 代码如下:



class Program:ImyInterface //继承自接口
{
string id ="";
string name ="";
public string ID //编号
{
get
{
return id;
}
set
{
id = value;
}
}
public string Name //姓名
{
get
{
return name;
}
set
{
name = value;
}
}
public void ShowInfo() //显示定义的编号和姓名
{
Console.WriteLine(("编号\t 姓名");
Console.WriteLine(ID+"\t"+Name);
}
static void Main(string[] args)
{
Program program = new Program(); //实例化 Program 类对象
ImyInterface imyinterface = program; //使用派生类对象实例化接口 ImyInterface
imyinterface.ID="TM"; //为派生类中的ID属性赋值
imyinterface.Name="C# 3.5 从入门到应用开发"; //为派生类中的 Name 属性赋值
}
}

按 Ctrl+F5 键查看运行结果,如图1 所示。

C# 接口的实现与继承_c#

图1 接口的实现实例运行结果

上面的实例中只继承了一个接口,接口还可以多重继承,用多重继承时,要继承的接口之间用逗号(,)分隔。

例2

创建一个控制台应用程序,其中声明 3个接口、IPeopleI、ITeacher 和 IStudent,其中,ITeacher 和 IStudent 继承自IPeople。然后使用Program类继承这3个接口,并分别实现这3个接口中的属性和方法。

代码如下:


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 = "";
string sex = "";
public string Name //姓名
{
get
{
return name;
}
set
{
name = value;
}
}
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 //使用派生类对象实例化接口 IStudent
istudent.Name ="C#";
istudent.Sex ="男";
istudent.study();
}
}
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 = "";    string sex = "";    public string Name                       //姓名     {         get         {              return name;         }         set         {              name = value;         }    }    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        //使用派生类对象实例化接口 IStudent         istudent.Name ="C#";         istudent.Sex ="男";         istudent.study();    }  }

按 Ctrl+F5 键查看运行结果,如图2 所示。

C# 接口的实现与继承_派生类_02

图2 接口的实现实例运行结果




- END -


C# 接口的实现与继承_c#_03