接口
2016-03-08 22:35
183 查看
1.接口就是一组抽象成员的命名集合。
2.接口与抽象类
虽然类定义了一组抽象成员,它完全可以在定义许多构造函数、字段数据、非抽象成员、等。但是接口,只能包含抽象成员
3.接口成员不指定访问修饰符(所有的接口成员都是公共的和抽象的)。并且支持属性协议,这里和类中的属性比较如下。语法上支持自动属性的格式且支持仅只读或这只写的语法。如:int p{get;} //这个在普通类中是不允许自动属性只用一个的。下图,接口中属性不产生对应的私有字段。
4.实现接口
必须全部实现接口中的成员。
5.显示接口实现
如果要实现具有相同成员的接口,可以使用显示接口实现语法来解决这种命名冲突。
public interface ITest1
{
void Func1();
}
public interface ITest2
{
void Func1();
}
public class MyClass : ITest1, ITest2
{
void ITest1.Func1() //显示实现接口成员,使用这个语法不允许指定访问修饰符,显示实现的成员自动私有的。
{
throw new NotImplementedException();
}
void ITest2.Func1()
{
throw new NotImplementedException();
}
}
调用:
private void TestFun()
{
MyClass myCls = new MyClass();
((ITest1)myCls).Func1(); //必须通过显示的转换来访问对应的方法。
((ITest2)myCls).Func1();
}
6.如果接口扩展了既有的接口,那么他就继承了父类接口定义的抽象成员。
2.接口与抽象类
虽然类定义了一组抽象成员,它完全可以在定义许多构造函数、字段数据、非抽象成员、等。但是接口,只能包含抽象成员
3.接口成员不指定访问修饰符(所有的接口成员都是公共的和抽象的)。并且支持属性协议,这里和类中的属性比较如下。语法上支持自动属性的格式且支持仅只读或这只写的语法。如:int p{get;} //这个在普通类中是不允许自动属性只用一个的。下图,接口中属性不产生对应的私有字段。
4.实现接口
必须全部实现接口中的成员。
5.显示接口实现
如果要实现具有相同成员的接口,可以使用显示接口实现语法来解决这种命名冲突。
public interface ITest1
{
void Func1();
}
public interface ITest2
{
void Func1();
}
public class MyClass : ITest1, ITest2
{
void ITest1.Func1() //显示实现接口成员,使用这个语法不允许指定访问修饰符,显示实现的成员自动私有的。
{
throw new NotImplementedException();
}
void ITest2.Func1()
{
throw new NotImplementedException();
}
}
调用:
private void TestFun()
{
MyClass myCls = new MyClass();
((ITest1)myCls).Func1(); //必须通过显示的转换来访问对应的方法。
((ITest2)myCls).Func1();
}
6.如果接口扩展了既有的接口,那么他就继承了父类接口定义的抽象成员。
相关文章推荐
- DLL的概念、分类、调用,DLL如何导出函数、变量和类
- ViewController的生命周期
- 3.memcached的基本命令
- 值得推荐的android开源框架
- [matlab]代码优化
- 矩阵的交
- 去掉UItableview headerview黏性(sticky)
- Android网络编程概述
- BZOJ 1025: [SCOI2009]游戏 背包DP
- Homework 1 -- The beginning
- ***LeetCode 95. Unique Binary Search Trees II
- 2016-03-08
- 1040. Longest Symmetric String (25) 最长回文子串
- 【Bug】Spark sql jdbc fails for Oracle NUMBER type columns
- 学习记录-Qt读取条码扫描枪
- Git 版本管理
- 开博小记
- OpenGL编程(三)让矩形动起来
- 浅谈凸优化中的共轭函数
- 2.对memcached进行curd操作