```csharp
接口定義的語法形式如下:
interface 接口名稱
{
接口成員
}
//1.接口名稱通常是以I開頭,再加上其他的單詞構成
//2.接口中的成員不允許使用public private protected internal 訪問修飾符
//接口中的成員不允許使用 static virtual abstract sealed 修飾符
//在接口中不能定義字段
//在接口中定義的方法不能包含方法體
class 類名 : 接口名
{
//類中的成員以及實現接口中的成員
}
//以抽象方式實現接口中的成員是指將接口中未實現的成員定義爲抽象成員
interface ITest
{
string name {get ; set}
void Print();
}
abstract class Test :ITest
{
public abstract string name { get; set;}
public abstract void Print();
}
//將定義的接口分別使用隱式和顯式方式實現
class ComputerMajoi :ICompute
{
public in Id { get ; set; } //隱式的實現接口中的屬性
public string Name { get; get;} //隱式實現接口中的屬性
public double English { get; set;}
public double Datebse { get; set;}
public void Avg() //隱式實現接口的方法
{
double avg = (English + Programming +Database) / 3 ;
Console.WriteLite("平均分" + avg);
}
public void Total()
{
double sum = English +Programming +Database;
Console.WriteLite("總分爲:" +sum);
}
//以上所有接口中的成員在實現類ComputerMajor中都被 public修飾符修飾
//在Main 方法中調用該實現類的成員
class program
{
static void Main(string[] args)
{
ComputerMajoi computerMajoi = new ComputerMajoi();
computerMajoi.Id =1;
computerMajoi.Name = "李明";
computerMajoi.English = 80;
computerMajoi.Programming = 90;
computerMajoi.Database = 85;
Console.WriteLite("學號:" + computerMajoi.Id);
Console.WriteLite("姓名:" + computerMajoi.Name);
Console.WriteLite("成績信息如下:");
computerMajoi.Total();
computerMajoi.Avg();
}
}
}
//使用顯式方式來實現接口成員
class ComputerMajoi :ICompute
{
public double English { get; set;}
public double Programming {get; set;}
public double Database { get; set;}
int ICompute.Id. {get; set;} //顯式實現接口中的屬性
string ICompute.Name { get; set;} //顯式實現接口中的屬性
void ICompute.Total() //顯式實現接口中的方法
{
double sum = English +Programming +Database;
Console.WriteLite("總分數"+sum);
}
void ICompute.Avg()
{
double avg = (English +Programming +Database) / 3;
Console.WriteLite("平均分爲:" + avg);
}
}
//以上代碼在使用顯式方式實現接口中的成員時,所有成員都會加上接口名稱ICompute作爲前綴,並且不佳任何修飾符
//在Main方法中調用實現類的成員
class program
{
static void Main (string[] args)
{
ComputerMajoi computerMajoi =new ComputerMajoi();
ICompute compute = computerMajoi = new ComputerMajoi();
ICompute compute = computerMajoi; //創建接口的實例
compute.Id = 1;
compute.Name = "李明";
computerMajoi.English = 80;
computerMajoi.Programming =90;
computerMajoi.Database = 85;
Console.WriteLite("學號:" + compute.Id);
Console.WriteLite("姓名:" + compute.Name);
Console.WriteLite("成績信息如下:");
compute.Total();
compute.Avg();
}
}
//顯式方式實現接口的成員時,必須使用接口的實例來調用,而不能使用實現類的實例來調用
//接口與抽象類的區別
/*接口:
1.在接口中僅能定義成員,但不能有具體的實現
2.在接口中不能聲明字段,並且不能聲明任何私有成員,成員不能包含任何修飾符
3.接口能使用類或者結構體來繼承
4.在使用類來實現接口時,必須隱式或顯式地實現接口中所有成員,否則需要將實現類定義爲抽象類,並將接口中未實現的成員以抽象的方式實現。
5.一個接口允許繼承多個接口
*/
/*抽象類:
1.抽象類除了抽象成員外,其他成員允許有具體的實現
2.在抽象類中能聲明任意成員,並能使用任何修飾符來修飾
3.抽象類僅能使用類繼承
4.在使用類來繼承抽象類時允許實現全部或部分成員,但僅實現其中的部分成員,其實現類必須也定義爲抽象類
5.一個類只能有一個父類