using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
/*接口只聲明、無實現、不能實例化;
接口可包含方法、屬性、事件、索引器, 但無字段;
接口成員都是隱式的 public, 不要使用訪問修飾符;
類、結構和接口都可以繼承多個接口;
繼承接口的類必須實現接口成員, 除非是抽象類;
類實現的接口成員須是公共的、非靜態的.*/
// 定義接口
interface Myinterface
{
//在接口裡面聲明一個方法, 沒有實現. 也不能有實現
int Num(int i, int s);
}
// 實現接口
class MyClass : Myinterface
{
public int Num(int i, int s) //由於接口裡面的成員都是public 所以實現的時候也要是public , 否則會報錯.
{ return i + s; }
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//下面試試一個接口多個實現.
interface Myinterface1
{
int Num(int i, int s);
}
// 多個實現.
class Add : Myinterface1 // 實現1 加法
{
public int Num(int i, int s)
{ return i + s; }
}
// 實現2 減法
class Sub : Myinterface1
{
public int Num(int i, int s)
{ return i - s; }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 多個接口一個類實現.
interface face
{ int Num(int i, int s);}
interface face1
{ int Num(int i, int s);}
// 一個類來實現兩個接口,並且顯示的實現.
/* 顯示實現接口不需要訪問修飾符; 但顯示實現的方法只能通過接口訪問 */
class MyFace : face, face1
{ int face.Num(int i, int s) { return i + s; } // 實現第一個.
int face1.Num(int i, int s) { return i - s; } // 實現第二個.
}
class Program
{
static void Main(string[] args)
{
//單個接口單個實現
MyClass My = new MyClass();
Console.WriteLine(My.Num(10, 9)); // 19
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//一個接口的多個實現.
Add jiafa = new Add();
Console.WriteLine(jiafa.Num(56,35)); //91
Sub jianfa = new Sub();
Console.WriteLine(jianfa.Num(56,35));//21
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 多個接口一個類實現. 只能通過接口訪問.
face Myjiafa = new MyFace();
face1 Myjianfa = new MyFace();
Console.WriteLine(Myjiafa.Num(20,10));//30
Console.WriteLine(Myjianfa.Num(20,10));//10
}
}
}