有独到见解的请回复:接口(Interface)是什么,为什么使用接口,如何恰当的使用接口?

coquettishelf 2003-09-21 11:26:04
在csdn讨论区,有很多精辟的但书上没有的关于基础概念的论述,这些论述比起经典的概念可能有些不全面,失于偏颇,但在实际的应用中往往可操作性极强。希望有对“接口(Interface)是什么,为什么使用接口,如何恰当的使用接口?”有独到见解的朋友能把自己的珍藏见解贡献出来,大家共享,共同促进。



……独乐乐,与人乐乐,孰了?哈哈!
...全文
525 144 打赏 收藏 转发到动态 举报
写回复
用AI写文章
144 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZeroC 2004-02-23
  • 打赏
  • 举报
回复
接口是一种约定
bxh2dai 2004-02-19
  • 打赏
  • 举报
回复
谢谢楼上的每一位,觉得很有体会~!
swinging 2004-02-18
  • 打赏
  • 举报
回复
最近对接口又有些体会,
使用接口定义类型,这个是《EFFECTIVE JAVA》中的一条,
而在使用时,要使用类型来操作,这样可以最大限度避免受到具体实现细节的影响。
jeffyan77 2004-02-18
  • 打赏
  • 举报
回复
我收到了一封信,不知道是不是楼主写的。

接口和抽象类的结合使用基本上可以概括为两个设计模式:

Adapter模式(类形式)
Default Adapter模式

建议好好读一读这两个模式,会有一些用处
wzpbobsir 2004-02-18
  • 打赏
  • 举报
回复
C里面的纯虚类,Delphi的Interface,一个国家的外交部
programer23 2004-02-17
  • 打赏
  • 举报
回复
void (几何图形 jh )
{
jh.draw();
jh.move();
}
几何图形 yuan =new 圆形();
几何图形 fang =new 方形();
前提是圆形和方形实现了接口几何图形
class main{

void(yuan);
void(fang);
}
sandzou 2004-02-16
  • 打赏
  • 举报
回复
我喜欢-----mozart2000(mozart2000),如果她是妹妹
mozart2000 2004-02-14
  • 打赏
  • 举报
回复
其实用电脑DIY来比喻最直观了

主板上那些插槽都是接口。
只要符合接口的规范,你可以随意使用产品。
比如,你可以用DLink的网卡,也可以用3Com的网卡,
而集成网卡的主板,你就没有替换的余地了。

用接口来编程,可以提高软件的扩展性。
sy_programmer 2004-02-12
  • 打赏
  • 举报
回复
mark
freyue 2004-02-03
  • 打赏
  • 举报
回复
mark
icebluenet 2004-01-30
  • 打赏
  • 举报
回复
mark
mixterQ 2004-01-22
  • 打赏
  • 举报
回复
接口......大概和OGY有关
其实一样,不管内部。爽就行
liefeng123 2004-01-20
  • 打赏
  • 举报
回复
感谢各位大虾,然我学到不少东西,学习~!!
coquettishelf 2004-01-17
  • 打赏
  • 举报
回复
我是发帖人,这么多的朋友都来共同关注这个问题,让我学到了很多东西,强烈感谢各位。舍不得结帖,希望大家能继续把各自的意见都说出来,来共同加深我们对这个问题的认识。
coquettishelf 2004-01-17
  • 打赏
  • 举报
回复
“接口就是对客户的承诺”说得很有意思。第一次听说,但是,仔细想想,还真就那么回事。强烈鼓掌!
eyeieye 2003-12-31
  • 打赏
  • 举报
回复
接口就是对客户的承诺
wangwenyou 2003-12-31
  • 打赏
  • 举报
回复
to ajoo
好久不见,新年快乐!
xiongBill 2003-12-29
  • 打赏
  • 举报
回复
好多的C++ FANS
同志,先说说你是用什么编程的?

接口就是沾有万能胶水的避孕套,套套也要写个class,想象你为了不让MM怀孕,定义you and mm class,只要能CHA进去就行了,其实套套也有透明的,这样推理接口你就不用把它放在心上,视它不见,你就可以编出好多代码了
soarweiss 2003-12-28
  • 打赏
  • 举报
回复
1 说接口就是用来实现多态的不大对吧,如果没有接口,多态能实现吗?也能嘛
class O
{
public void run(){}
}
class A extends O
{
public void run(){}
}
class B extends O
{
public void run(){}
}
//用于测试多态的一个方法
public void test(O obj)
{
obj.run();
}
//实现多态
test(new A()); //调类A中的run()
test(new B()); //调类B中的run()

你可能会说class O 不就相当于是个接口吗?
不一样! 类O 中也实现了run() 原因是:

如果还有
class C extends O
{}
class D extends O
{}
但它们未覆写 run(),
因为它们就想用父类O中的run()
这难道不是另一种形式的多态的应用吗??

2 说接口是为了实现多重继承的也不对,请看:
class A
{
class B extends O1{}
class C extends O2{}

pubic void run()
{
B b = new B();
C c = new C();
b.run1();
c.run2();
}
}

class O1 { public void run1(){} }
class O2 { public void run2(){} }

对于类A 既用了O1的函数run1(),又用了O2 的函数run2(),
算不算实现了多重继承呢?没用接口吧
(注:inner class 也是实现多重继承的一种很方便的方式)

3 说接口中不能有属性只有功能的人也要注意了,别想当然.请看
public interface I
{
int a = 1;
int b = 2;
}
a,b算不算属性?至少不算是“功能”吧
如果有人认为我写错了,可以实际编译一下
(注:其实这是常量声明的一种方法,a,b会被自动转为static 和 final)

4 对于“接口继承接口”
听起来有点绕,我觉得其实并不是一个很深的问题。就像类继承类,共同的东西多了,就把它们提出来作为一个父接口,让相关的接口去继承,说穿了,也是种复用嘛。


对于接口,我自己也理解的不很透,
总体上觉得它是作为一个标准,让大家来遵守。
其实我认为重要的还是怎么用接口,在什么情况下用,
希望有经验的前辈多举举这方面的实例
lycity 2003-12-26
  • 打赏
  • 举报
回复
至于人和猪接口的具体实现,大家不用去管,那是上帝实现的。
加载更多回复(124)

50,535

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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