转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
Henry的VB.NET之旅(九)—接口继承         ★★★★

Henry的VB.NET之旅(九)—接口继承

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1771 更新时间:2009/4/23 19:01:35
End Interface

Interface ITextBox

Inherits IControl

‘在文本框设置文本

Sub SetText(ByVal text As String)

Shadows Sub Paint()

End Interface

Interface IListBox

Inherits IControl

‘在下拉列表设置列表项

     Sub SetItems(ByVal items() As String)

End Interface

Interface IComboBox

    Inherits ITextBox, IListBox

End Interface

Sub test(ByVal x As IComboBox)

    x.Paint()

End Sub

 

“这里的x.Paint()是哪一个接口的方法?IControl是ITextBox?”大李一脸笑意,真是气人。但是,我应该可以回答上来的,我按类的隐藏的概念回忆了一下(详见前文《重载和隐藏》),哈,明白了,它当然是调用它直接被派生的那个基类中的方法呀。

“是ITextBox中的方法吧!”

“可以呀,不错!”大李简单地夸了我一句,然后喝了口水,继续说:“基接口的成员名称在继承分层结构的一条路径中被隐藏,但它在其它的路径中不会被隐藏,比如我们可以从IlistBox中去继承Icontrol中的Sub Paint()。”

“可是,在您的这个示例中的sub test里,x是接口的实例吗?可是,接口还没有实现呀?”我还是有问题要问。

“test方法其实可以接受任何将 IComboBox 实现为小部件参数的对象,即使对接口 IComboBox 的实现可能相差很大。”大李回答道。

“是不是说我们在使用的时候,可以用实现IComboBox接口的类,比如CHenry的一个实例去代替x?”

大李笑着说:“基本上差不多了,你自己慢慢考虑吧。还有个问题比较有意思:实现类中用于实现接口的方法或属性名倒不用与接口中定义的名字一样,只要参数列表与返回类型一致就行了。比如在CHenry中的sub Paint()如果更名为sub xxx()也是可以的,只要后面跟着Implements IControl.Paint就行了。命名一定要有规划,不然,接口继承中也会带来命名重复造成的问题,我们来看一下。”

 

Interface IHenry1

     Property yyy() As Integer

End Interface

Interface IHenry2

    Sub yyy(ByVal i As Integer)

End Interface

Interface IHenryDerived

    Inherits IHenry1

    Inherits IHenry2

End Interface

Sub test(ByVal x As IHenryDerived)

    x.yyy(1)

    x.yyy = 10

End Sub

 

“你看,在sub test()中,无论你按IHenry2中的定义方式来使用x.yyy(1),还是用IHenry1中的方式来使用x.yyy=10,集成编译器都会在它们下方打上波浪线,表示出错,是什么错呢?”大李一边问我,一边把鼠标靠近波浪线,出现了编译器的出错提示:

“yyy”在继承接口“IHenry1”与“IHenry2”之间不明确

“所以,我一直强调命名规则,对吧?”大李看了我一眼,“其实解决方法倒用不着去更改基接口中的方法与属性名。”

Sub test()

    Dim x As IHenryDerived

    CType(x, IHenry1).yyy = 10

    CType(x, IHenry2).yyy(1)

End Sub

 

“哦,用强制类型转换就可以了。”我又学到一招,不禁暗自窃喜。但是我心里总是有一个不大不小的疙瘩,说来说去,这接口与抽象类可真的太象了。赶紧得问问:“大李哥,这接口与……”

“抽象类?”大李一口就接了上来:“别急,小伙子,看看几点了,该下楼吃午饭了。”

 

---------------------------------------------------------------

声明:本文版权与解释权归韩睿所有,如需转载,请保留完整的内容及此声明。

QQ: 18349592

上一页  [1] [2] [3]  下一页


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台