C#中的接口
2014-03-25 19:49
267 查看
作者:21aspnet
转自:/article/2647379.html
接口把一组公共方法和属性组合起来 ,以封装特定功能的一个集合。通过类可以实现接口,这样类就支持接口所有的属性和方法。
接口只能对方法和属性进行定义,不能实现,只能由支持它的类实现。接口中的成员不能用访问符修饰,如public,private,它的成员默认为public
定义接口比较简 单
public interface IMyinterface
{
void Dosomething();//方法成员
int MyAttribute//属性成员
{
get;//这里只能定义这个属性是否为只读
set;
}
}
接口和抽象类比较相似,但一个类只能派生于一个抽象类,不过可以实现N个接口。
举个例子来说明一下。
有两个抽象类,car和train,,汽车和火车
下面还有许多类,比如公交车,卡车等都派生于汽车
客车,货车都派生于火车
在car,train中公别定义了汽车与火车的一 些主要特性。
自然的,它们的派生类就拥有这样的特性,
但是汽车下的公交车,火车下的客车都可以乘载客人,所以这两个类可以共同实现一个拥有乘载客人功能的接口,而卡车与货车可以共同实现一个拥有运载货物的接口。
一个类支持一个接品,就必须实现它所有的成员
interface IMyinterface
{
void Dosomething();
void Doelsething();
}
class Myclass:IMyinterface
{
void IMyinterface.Dosomething()
{
Console.WriteLine("1");
}
public virtual void Doelsethiing()
{
Console.WriteLine("2");
}
}
class Myclass2:Myclass
{
public override void Doelsething()
{
Console.WriteLint(“3“);
}
}
上面定义了一个接口IMyinterface, Myclass实现了这个接口, 这样,派生于Myclass的类Myclass2也就默认的支持这个接口,也继承了对方法的实现,在Myclass2中,还可以对Doelsething方法进行重写。
但这是有前提的。那就是Doelsething方法是由Myclass类隐式实现的。隐式实现只须匹配方法返回值和方法签名即可。这样的方 法,可以使用关健字vritual 和 abstract来修饰,而且可以用类的实例类调用
class obj=new Myclass();
obj.Doelsethiing();
而第一个方法Dosomething是显式执行的。它只能由接口的引用变量来调用。而且派生类不会继承这个方法的实现,所以上面的Myclass2类也要再加一个这个方法的实现 ,因为它继承了Myclass,就默 认的支持这个接口。
转自:/article/2647379.html
接口把一组公共方法和属性组合起来 ,以封装特定功能的一个集合。通过类可以实现接口,这样类就支持接口所有的属性和方法。
接口只能对方法和属性进行定义,不能实现,只能由支持它的类实现。接口中的成员不能用访问符修饰,如public,private,它的成员默认为public
定义接口比较简 单
public interface IMyinterface
{
void Dosomething();//方法成员
int MyAttribute//属性成员
{
get;//这里只能定义这个属性是否为只读
set;
}
}
接口和抽象类比较相似,但一个类只能派生于一个抽象类,不过可以实现N个接口。
举个例子来说明一下。
有两个抽象类,car和train,,汽车和火车
下面还有许多类,比如公交车,卡车等都派生于汽车
客车,货车都派生于火车
在car,train中公别定义了汽车与火车的一 些主要特性。
自然的,它们的派生类就拥有这样的特性,
但是汽车下的公交车,火车下的客车都可以乘载客人,所以这两个类可以共同实现一个拥有乘载客人功能的接口,而卡车与货车可以共同实现一个拥有运载货物的接口。
一个类支持一个接品,就必须实现它所有的成员
interface IMyinterface
{
void Dosomething();
void Doelsething();
}
class Myclass:IMyinterface
{
void IMyinterface.Dosomething()
{
Console.WriteLine("1");
}
public virtual void Doelsethiing()
{
Console.WriteLine("2");
}
}
class Myclass2:Myclass
{
public override void Doelsething()
{
Console.WriteLint(“3“);
}
}
上面定义了一个接口IMyinterface, Myclass实现了这个接口, 这样,派生于Myclass的类Myclass2也就默认的支持这个接口,也继承了对方法的实现,在Myclass2中,还可以对Doelsething方法进行重写。
但这是有前提的。那就是Doelsething方法是由Myclass类隐式实现的。隐式实现只须匹配方法返回值和方法签名即可。这样的方 法,可以使用关健字vritual 和 abstract来修饰,而且可以用类的实例类调用
class obj=new Myclass();
obj.Doelsethiing();
而第一个方法Dosomething是显式执行的。它只能由接口的引用变量来调用。而且派生类不会继承这个方法的实现,所以上面的Myclass2类也要再加一个这个方法的实现 ,因为它继承了Myclass,就默 认的支持这个接口。
相关文章推荐
- C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义
- 发送短信验证码及调用短信接口与C# 后台 post 发送
- C#之接口
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- C#中抽象类和接口的区别
- api 和 C# 里的接口的区别?
- C# 接口
- C#中实现接口排序
- 从IL代码来探讨C#中的接口方法、虚方法与抽象方法
- C#中IEnumerable接口用法实例分析
- C# 浅谈 接口(Interface)的作用
- 基于c# 类、接口、结构的联系与区别详解
- [C#]简单重写IComparer接口,实现自己的String.CompareTo 方法,自定义比较规则。
- c# List<接口>小技巧
- c#接口
- C#获取本机上所有网络接口及真实IP地址信息
- c# 反射调用程序集方法、接口实例
- C# 抽象类和接口
- C# 中普通类、抽象类、接口之间的区别
- C#通过接口与线程通信(捕获线程状态)