接口解释:接口只包含只有方法,属性,索引器(有参属性),事件四种成员。方法的实现是在实现接口的类中完成的。接口方法默认是public类型,不能显示指定方法的public类型。接口或抽象类都不能实例化。
接口实现:接口实现分显示实现和隐示实现。
//定义接口
interface IGraphic
{
float getArea();
}
//隐士隐示实现接口
public class Rectangle : IGraphic
{
private float _width = 10;
private float _height = 10;
#region IGraphic 成员
public float getArea()
{
return _width * _height;
}
#endregion
}
//两种方式均可以调用接口方法
static void Main(string[] args)
{
//调用方式1
IGraphic grahic = new Rectangle();
float area = grahic.getArea();
Console.Write(area.ToString());
Console.Read();
//调用方式2
Rectangle rectangle = new Rectangle();
area = rectangle.getArea();
Console.Write(area.ToString());
Console.Read();
}
为了限制使用者只能通过接口调用,可以显示实现接口
namespace ConsoleApplication1
{
interface IGraphic
{
float getArea();
}
public class Rectangle : IGraphic
{
private float _width = 10;
private float _height = 10;
#region 显示实现 IGraphic 成员
float IGraphic.getArea()
{
return _width * _height;
}
#endregion
//#region 隐示实现 IGraphic 成员
//public float getArea()
//{
// return _width * _height;
//}
//#endregion
}
class Program
{
static void Main(string[] args)
{
//调用方式1
IGraphic grahic = new Rectangle();
float area = grahic.getArea();
Console.Write(area.ToString());
Console.Read();
////调用方式2 已经通不过编译了
//Rectangle rectangle = new Rectangle();
//float area = rectangle.getArea();
//Console.Write(area.ToString());
//Console.Read();
}
}
}
总结:从接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束。从调用者角度来说,如果他知道了某个类是继承于IGraphic接口,那么他就可以放心大胆的调用
getArea方法。再就是如果接口显示实现,就可以限制调用者只能通过接口调用了。
浙公网安备 33010602011771号