关于接口的实现和继承的问题

简介:

     以前有个朋友提出这样一个问题:有一个接口Interface1定义如下:

interface Interface1
{
void HelloWorld();
}

用一个类去实现这个接口:

public class class1 : Interface1
{
public void HelloWorld()
{
System.Windows.Forms.MessageBox.Show("Hello World!");
}
}

现在,class1实现了接口Interface1,当类class1的一个子类class2继承class1时,子类class2自然就可以访问HelloWorld()方法了。问题就出在这里,其实我们不希望子类class2去继承类class1中实现接口的部分。这该怎么办呢?

当时我们都没能够给出回答,我自己还认为这个问题是不可能实现的。现在看来我又错了。今天在QQ群中,有一个朋友再次提出了这个问题,并且提供了一些方法。我根据他的提示,很轻松的就解决了这个问题。其实答案很简单,只需要在类class1中显示的实现接口就可以了。具体定义如下:

class class1 : Interface1
{
void Interface1.HelloWorld()
{
System.Windows.Forms.MessageBox.Show("Hello World!");
}
}

这样定义以后,方法HelloWorld就不再是一个public的方法了。甚至他的属性比私有更严格,连class1本身都不能够进行访问。如果需要对方法HelloWorld进行访问,需要定义一个Interface1的引用,使它指向class1的实例。通过这个引用就可以访问了。

另外通过这种方法来实现的时候,class1的子类也都拥有了这个方法,只是不能被访问,如果使Interface1的引用指向class1 的子类的引用也同样可以访问该方法。




本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2008/12/30/1365287.html,如需转载请自行联系原作者

相关文章
|
4月前
|
Java
抽象类和接口有什么区别?
抽象类和接口有什么区别?
|
2天前
|
Java
接口和抽象类的区别
接口和抽象类的区别
16 6
|
20天前
|
Java
抽象类和接口的区别
抽象类和接口的区别
27 0
|
8月前
接口和抽象类有什么区别
接口和抽象类有什么区别
46 0
|
9月前
|
Java C++
接口与抽象类的区别
接口与抽象类的区别
|
SQL 关系型数据库 数据库连接
接口继承|学习笔记
快速学习接口继承,接口只能被类去实现,如果想要规范团队,也不能把所有想要规范的东西写在一个接口里,这样会使接口臃肿,不好实现接口的类,因为有可能并不需要这么多规范。为了使接口的体系更加完整,更加具有结构性,就有了接口继承。本节的目标是理解接口的继承体系,掌握具体的接口继承实现。
92 0
接口继承|学习笔记
|
网络协议 测试技术 Go
实现接口和继承比较(2) | 学习笔记
快速学习实现接口和继承比较(2)
56 0
实现接口和继承比较(2) | 学习笔记
|
网络协议 测试技术 Go
实现接口和继承比较(1) | 学习笔记
快速学习实现接口和继承比较(1)
85 0
实现接口和继承比较(1) | 学习笔记
抽象类、接口的区别和相似点(一)
抽象类、接口的区别和相似点(一)
112 0
抽象类、接口的区别和相似点(一)