1.Interface 定义结构
1 [attributes] [access-modifiers] interface interface-name [:base-inteface-list] 2 { 3 interface body 4 }
[attributes] 性质 (可选项);
[access-modifiers] 访问修饰符 (可选项);//public internal private protected protected internal;
interface-name 接口名 (习惯以大写 I 开头);
[:base-inteface-list] 接口基类列表 (可选项);
interface body 接口主体(不能有访问修饰符);//只是定义接口的方法和属性等的签名;
//实际的实现是写在使用该接口的class里;
1 //Define an Interface 2 public interface IStorable 3 { 4 void Read( ); //不能有access-modifier 5 void Write(object);//只是签名,没有具体内容 6 }
类继承接口
1 public class Document : IStorable // 继承IStorable接口 2 { 3 public void Read( ) {...} //可以有access-modifier 4 public void Write(object obj) {...} // 写出具体的实现内容 5 // ... 6 }
一个类继承多个接口
1 public interface IStorable 2 { 3 void Read( ); 4 void Write(object); 5 } 6 7 interface ICompressible 8 { 9 void Compress(); 10 void Decompress(); 11 } 12 13 public class Document : IStorable, ICompressible // 继承多个接口的列表 14 { 15 //实现IStorable 16 public void Read( ) {...} //写出具体的实现内容 17 public void Write(object obj) {...} 18 // 实现ICompressible 19 public void Compress(){ …} 20 public void Decompress() { …} 21 }
接口继承接口
interface ICompressible { void Compress(); void Decompress(); } interface ILoggedCompressible : ICompressible // 接口 ILoggedCompressible继承 接口ICompressible { void LogSavedBytes(); } public class Document : ILoggedCompressible { // 实现ICompressible public void Compress(){ …} public void Decompress() { …} // 实现ILoggedCompressible public void LogSavedBytes() { …} // 要实现所有的接口成员 }
显式定义与隐式定义
1 interface IStorable 2 { 3 void Read(); 4 void Write(); 5 } 6 interface ITalk 7 { 8 void Talk(); 9 void Read(); 10 } 11 public class Document : IStorable, ITalk 12 { 13 public Document(string s) 14 {…; } 15 // Make read virtual 定义为虚函数 16 public virtual void Read() //Istorable的Read方法为 隐式定义 17 {…; } 18 public void Write() 19 {…; } 20 void ITalk.Read() // ITalk的 Read方法 为 显式定义 不能有 访问修饰符 隐式为public 21 { …; } 22 public void Talk() //不需要显式定义 23 { …; } 24 }
显式定义与隐式定义的调用
1 public class Document : IStorable, ITalk
2 {
3 public void Read() 4 { …; } … 5 void ITalk.Read() 6 { …; } 7 } 8 9 Document theDoc = new Document(“Test”); 10 theDoc.Read(); //调用隐式定义的Read()
11 12 ITalk itDoc = theDoc; // 转换为interface 13 itDoc.Read(); //调用显式定义的Read()
原文:http://www.cnblogs.com/yi-jie/p/4395934.html