C#接口学习


```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.一个类只能有一个父类

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章