接口实现的继承机制

转载 2007年09月25日 09:09:00
接口实现的继承机制
 
一个类继承了它的基类所提供的接口实现,如果不显示的重新实现接口,派生类就无法改变从基类中继承来的接口映射
案例
     interface IBase
     {
         void Paint();
     }
     class Control:IBase
     {
         public void Paint()
         {
              Console.WriteLine("Control.Paint");
         }
     }
     class test:Control
     {
         new public void Paint()
         {
              Console.WriteLine("test.Paint");
          }
     }
案例中test中的方法Paint覆盖了Control的方法Paint,但却没有改变Control.Paint对IBase.Paint的映射,并且在类的实例和接口的实例中对Paint方法的调用会产生以下结果
static void Main()
         {
              Control c = new Control();
              test t = new test();
              IBase ic =c;
              IBase it =t;
              c.Paint();
              t.Paint();
              ic.Paint();
              it.Paint();
         }
输出结果为
Control.Paint
test.Paint
Control.Paint
Control.Paint
 
也就是说test2的方法并没有改变IBase接口的映射
但是,当一个interface方法被映射到类的一个虚方法时,派生类就可以重载这个方法,并改变这个接口的实现。
也就是把上面的例子改成
     class Control:IBase
     {
         public virtual void Paint()
         {
              Console.WriteLine("Control.Paint");
         }
     }
     class test:Control
     {
         public override void Paint()
         {
              Console.WriteLine("test.Paint");
         }
 
     }
这样映射就发生了改变。
 
因为显示说明的接口成员不能被声明成虚,因此无法重载显示接口说明的实现。这时最好采用显示接口实现来调用另外一个方法,这个方法可以声明成虚,可以被重载
案例
     class Control:IBase
     {
         void IBase.Paint()
         {
              this.PaintControl();
         }
         public virtual void PaintControl()
         {
              Console.WriteLine("canrewrite");
         }
     }
     class test:Control
     {
         public override void PaintControl()
         {
              Console.WriteLine("berewrite");
         }
     }
这里显示接口成员可以执行可重载的方法PaintControl来实现重载
 

Java中的接口interface实现、与继承extends机制。

接口就是一些标准,把一些标准的制度写成方法,例如一个汽车必须有四个轮子,就可以把制造汽车写为一个接口,而制造四个轮子为接口必须方法,实现它的类就必须要实现制造四个轮子的方法。 语言、程序、框架的...

从c++的菱形继承到 C#的接口机制

在C++中,什么叫做钻石问题(也可以叫菱形继承问题),怎么避免它? 下面的图表可以用来解释钻石问题。 假设我们有类B...

JAVA继承的拓展——接口和事件机制

JAVA继承的拓展——接口和事件机制 为了实现代码的重用性和程序的扩展性,JAVA引用了类的继承这一方法,但是它存在着只能单个类之间继承的缺陷,为了弥补这一缺陷,这里引入了接口这一概念。 接口的定义 ...

Java的类继承机制 -- 应用于接口系统测试

首先,我们需要正确解析Java的类继承机制,通过一个demo即可。 例:     学生信息处理     基类:学生,完成所有学生的通用的方法     职务类:担任了各种职务的学生,他们也是学生...
  • ccpw_cn
  • ccpw_cn
  • 2015年08月08日 23:27
  • 482

通过反射机制获取位于同一个包下的接口的所有实现类

通过反射机制获取位于同一个包下的接口的所有实现类   public class ClassUtils {    public static List getAllImplClassesByIn...

RESTful接口签名认证实现机制

RESTful接口        互联网发展至今,催生出了很多丰富多彩的应用,极大地调动了人们对这些应用的使用热情。但同时也为互联网应用带来了严峻的考验。具体体现在以下几个方面: 1.     部...

从字节码角度分析泛型类,泛型方法,泛型接口的实现机制(类型擦除)

在java中泛型本质上是个语法糖,跟C++不一样,java根本不会创建泛型类,一切都只不过是编译器通过类型擦除机制实现的障眼法而已,比如 源码: public classChildTest e...

通过反射机制获取位于同一个包下的接口的所有实现类

public class ClassUtils {      public static List getAllImplClassesByInterface(Class c) {      ...

模拟DbUtils实现接口回调机制

想必大家都用过apache 的DbUtils吧,这个简单的对JDBC的封装小框架真的是非常非常的适合新手的学习呢。逻辑上也不是很复杂,难度刚刚好。 下面我就模仿它来实现一个字符串的处理小框架。思路我的...

Delphi 的接口机制浅探

  • 2008年03月24日 14:29
  • 68KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:接口实现的继承机制
举报原因:
原因补充:

(最多只允许输入30个字)