C#接口,类

网字 2018-01-07 11:48:02
因业务开发需要,引入了一个第三方DLL(貌似添加不了附件),用VC的对象浏览器查看如下图所示:

问题:
1、函数CallBomMenuFunction(为了截图方便简写:CallB)中定义变量ppPEBomCollections时,为何用的是PEBomCollections这个接口,而不是PEBomCollectionsClass这个类?
2、从PEBomCollections定义语法上看,它也不是继承自IPEBomCollections的接口,但却可以直接引用.Counts属性,为何?
3、接口也可以作为一种数据类型来定义变量?
4、因历史原因,已经找不到此DLL的原始作者,不明为什么在这个DLL中,总是会有IXXX,XXX接口,XXXClass这样的组合出现?
...全文
358 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdfgrtyu 2018-01-08
  • 打赏
  • 举报
回复
你说的这种乱七八糟的东西,谁知道是怎么回事啊,,,
秋的红果实 2018-01-08
  • 打赏
  • 举报
回复
接口 varName=new......,varName表示实现了该接口的类型的实例 找到作者也不一定记得当初的设计,关键是要找到这些接口或者类的具体实现
xuzuning 2018-01-08
  • 打赏
  • 举报
回复
用接口搭建应用程序框架 用实现接口的类来实现应用程序的行为(不同的实现内容,使应用程序有不同的表现)
五更琉璃 2018-01-08
  • 打赏
  • 举报
回复
依赖倒置原则 理论学学也不错
正怒月神 2018-01-08
  • 打赏
  • 举报
回复
1 多态 接口 对象=new 实例(); 2 多态,接口多继承 当同时继承接口1,接口2时 接口1 对象1=new 实例(); 接口2 对象2=new 实例(); 都是可以的,因为这就是多态。 3 语法上看起来是 接口 对象=new 实例(); 传递的其实已经是一个对象,而不是接口。传递的是一个已经实现了接口的对象。 4 这是人家书写的规范。 一般来说就是定义一个接口,和他的派生类。
  • 打赏
  • 举报
回复
接口本来就可以作为参数传递,代表只要是实现了该接口的具体实现都可以作为该方法的参数,这是面向对象的编程语言都支持的基本功能
  • 打赏
  • 举报
回复
1. 人家按照接口设计程序,很科学。 2. 你的那个接口是从另一个接口继承的。 3. 把变量声明成 PEBomCollections 或者 IPEBomCollections 都有可能。变量类型只是声明一下,谁说声明为什么类型的变量就只能引用这个类型实例化对象呢?你应该学习面性对象中关于“继承、接口”的知识。 4. 用什么接口,跟作者的设计图性有关。比如说作者说“我今天上街买了一双鞋”,紧接着说“我今天买了一双小粉皮靴”,那么作者就是在说两个概念,一个是“鞋”,另一个所“小粉皮靴”。能看懂人家“抽象——具体化”的差异,这才能理解人家的系统设计。至于说作者这样是否恰当地简化了类型系统,那只有在你首先理解了接口之后再说。

110,501

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧