社区
C#
帖子详情
接口变量申明问题
hum007
2012-07-08 11:28:40
IAOIBookmark bookmark1 = new AOIBookmarkClass();
IAOIBookmark bookmark2;
如题,两种方法都可以创建一个IAOIBookmark接口的变量,并且通过变量名打点的方式都可以得到IAOIBookmark接口下的方法和属性,这两种申明方法的区别是什么,什么时候用第一个,什么时候用第二个,请指教,菜鸟提问大神包涵~~~~
...全文
293
12
打赏
收藏
接口变量申明问题
IAOIBookmark bookmark1 = new AOIBookmarkClass(); IAOIBookmark bookmark2; 如题,两种方法都可以创建一个IAOIBookmark接口的变量,并且通过变量名打点的方式都可以得到IAOIBookmark接口下的方法和属性,这两种申明方法的区别是什么,什么时候用第一个,什么时候用第二个,请指教,菜鸟提问大神包涵~~~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
eric_sense
2013-03-28
打赏
举报
回复
请问使用该接口要调用哪个类
夜色镇歌
2012-07-09
打赏
举报
回复
先看看接口是干什么用的 再来看这个问题吧
IAOIBookmark bookmark2; 只有这句是没什么实际意义的
因为接口本来就是定义一种契约 定义了一大堆 没实现的方法属性什么的
YapingXin
2012-07-09
打赏
举报
回复
[Quote=引用楼主 的回复:]
IAOIBookmark bookmark1 = new AOIBookmarkClass();
IAOIBookmark bookmark2;
如题,两种方法都可以创建一个IAOIBookmark接口的变量,并且通过变量名打点的方式都可以得到IAOIBookmark接口下的方法和属性,这两种申明方法的区别是什么,什么时候用第一个,什么时候用第二个,请指教,菜鸟提问大神包涵~~~~
[/Quote]
IAOIBookmark bookmark1 = new AOIBookmarkClass();
这个,是申明了一个接口变量并初始化为一个实际的类。
IAOIBookmark bookmark2;
这个仅仅是申明了一个接口变量,没有初始化。
IAOIBookmark bookmark1 = new AOIBookmarkClass();
这个bookmark1是你拿过来就可以直接用的
IAOIBookmark bookmark2;
这个你还不能直接用,虽然你可以看到它有一些方法,但那只是个申明,没有实际的执行体的。
emailtome
2012-07-09
打赏
举报
回复
接口就是一种协议形式来看 第一种 用的比较少 第二种 用的比较多
贫僧不戒色
2012-07-09
打赏
举报
回复
实例化
hum007
2012-07-09
打赏
举报
回复
同一类中的接口可以用过QI(接口查询),转换接口用的关键字是as,但不同类中的接口可以使用强制转换吗?就是形如:
IAOIBookmark bookmark1=(IAOIBookmark )bookmark2
,这个
bookmark2
是其他类中的一个已经申明了的接口变量
孤独的占星师
2012-07-08
打赏
举报
回复
你写的第一种方式可以称之为“父类的对象指向子类的引用”,这种方式分配的对象即可以调用子类中的方法,也可以调用父类中的方法(当然你这种情况的父类是接口不存在可以调用的方法)。说的明白一点,就是第一种就是分配了一个AOIBookmarkClass类的一个对象。
至于第二种方式其实只是定义了一个IAOIBookmark接口的对象,但是没有实例化(当然接口也无法实例化,要实例化也只能像第一种方式一样,指向子类)。这种对象无法直接使用,需要使用的时候还是需要实例化的
devmiao
2012-07-08
打赏
举报
回复
第一个代码等价:
IAOIBookmark bookmark1;
bookmark1 = new AOIBookmarkClass();
就好比
int i = 1;
等价
int i;
i = 1;
如果你需要在定义一个对象的时候创建一个实例,就用第一个方法,简单。
否则,如果你需要的对象来自另一个引用变量,或者函数的返回值,就用第2个。
zhujiawei7
2012-07-08
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
但是为什么第二种方法bookmark2打点之后也会有IAOIBookmark接口下的属性和方法
[/Quote]
点出东西来,只是让你知道这个接口有哪些成员,并不代表你可以使用。
第2种方式,只是申明了一个接口变量,但没有实际的接口对象。你运行代码的时候会报空指针异常。
int i;
string str;
同理,也会报错。
devmiao
2012-07-08
打赏
举报
回复
那当然。
就好比 int i;
i也能点出东西呢。
hum007
2012-07-08
打赏
举报
回复
但是为什么第二种方法bookmark2打点之后也会有IAOIBookmark接口下的属性和方法
Java基础——
接口
接口
不能实例化,但是可以声明一个
接口
变量
用于存储
接口
实现类的对象。 可以使用instanceof关键字判断某个
接口
变量
是否是某个
接口
的
变量
接口
也可以继承 创建一个
接口
modified interface name{ //常量 [public ...
golang
接口
变量
的赋值和方法的调用
1、「方法」概念介绍 带有接收者的函数称为方法,方法是...2、
接口
变量
的赋值
接口
定义为一个方法的集合。方法包含实际的代码。换句话说,一个
接口
就是定义, 而方法就是实现。因此,接收者不能定义为
接口
类型,这样...
postman做
接口
测试10-全局
变量
/集合
变量
/环境
变量
变量
可以使我们在请求或脚本中存储和重复使用... 全局
变量
:一旦
申明
了全局
变量
,全局有效,也就是说postman中的任何集合,任何请求中都可以使用这个
变量
。它的作用域是最大的 。 环境
变量
:要
申明
环境
变量
,首...
ts 学习笔记(二)
变量
声明和
接口
1、没有作用域块,声明在全局作用域是全局
变量
,声明在函数内部就是局部
变量
2、有
变量
提升 let: 1、有作用域块 2、没有
变量
提升 3、已经声明的
变量
不可再次声明 const: 1、有作用域块 2、没有
变量
提升 3、一旦...
接口
中的
变量
在
接口
中可以
申明
变量
,但
变量
是隐式声明为public、static和final的。。。并不是要求,在
变量
前要加上static。。。。 标准: int m; string n; ................ ................ 等等
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章