深入探讨java的接口和抽象的内涵!

Virginer 2001-09-14 11:35:34
加精
搞来搞去还是不是真正的明白其内涵!
请给一点高的见解!
...全文
114 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jasper 2001-10-01
  • 打赏
  • 举报
回复
对,这就是多态的概念,看上去,大家都是pig,但其实eat的细节是不同的,但使用者只要知道,它使用的东西是pig的instance就行了,而这就是封装。
接口就是规范,这点也很对,而且这一点也是oo的重大实际意义,为什么要有oo,就是为了缩短开发周期,而缩短开发周期最好的方法就是通过协作和分工,而在分工协作中,最重要的就是任务分配和交流。接口的出现,就是oo中便于分配和交流的一件自然而然的事情。打个比方,这个世界既有IBM的PC,也有联想的PC,对于用户来说,只要知道他们实现了x86这个接口就行了,就可以放心大胆的用了。这样,联想PC,IBM PC,尽管它们做工作的细节不同,但同样都是规范的PC。对于程序员来说,不管你怎样实现这个功能,只要你用的是这个方法名,别的人就可以放心大胆的用你的方法了,这样,别人就不用等你开发好了,问你“你这个方法叫什么名字,我应该什么调用?”,因为这些都已经被接口规范好了,因此,变化的是你在具体类中实现的细节,不变的是你在接口中定义的方法名和调用方法。这也就是把“不变的和变化的分离开”
Virginer 2001-09-14
  • 打赏
  • 举报
回复
zzhphp(): 放在一个接口中实现了启动的特性(开关),而提取这样一个特性又有什么优势呢?
况且这特性还要再一次的在每个对象中具体的实现!
zzhphp 2001-09-14
  • 打赏
  • 举报
回复
我谈一下本人的关点,如有不对请多指教。
接口:我认为是建立在不同对象,所要实现共同的特性。如:对象电灯、电梯、汽车。。。它们是   不同的对象,可要运行它们,都会有一个启动的特性(开关),那么这个特性我认为就可以   放在一个接口中实现。

抽象:我认为是建立在同一对象的基础之上的,要对同一类对象的同一个特性进行详细的说明或许   要用到它,因为在同一类对象中,具体到各不同的实体时,都会在相同的特性的实现上有部   分的差别,所以使用这种“抽象”来解决。
-------------------------------------------------------------------------
以上是个人关点,如有不适之处还望高手提出。
同时希望大家,多提出一些在这两方面在实用中的经验。
sharetop 2001-09-14
  • 打赏
  • 举报
回复

对,最根本的区别有两点:接口是纯虚的,接口可以多继承。

一般在java开发中常用的是interface而不是abstract类,因为java不提供多重继承,所以只能用接口来实现了。

其实接口与C++中的纯虚类很类似了。
pboracle 2001-09-14
  • 打赏
  • 举报
回复
大型项目开发之前要给每一个小组成员分配任务
所以要有一种“先定义”一个空函数
“后实现”这个函数的机制
定义由项目组长做
实现由小组成员做
这就是抽象机制的由来
而接口则是在java中实现抽象的最佳途径
还有另一种方法是构造abstract类,没有interface好,因为接口是“纯虚的”
给点分,好吗
supersonics 2001-09-14
  • 打赏
  • 举报
回复
interface pig{
void eat(){}
}
public class bigpig implements pig{
void eat(){
System.out.println("eat a lot");
}
}
public class littlepig implements pig{
void eat(){
System.out.println("eat little");
}
}
pig myPig ;
myPig = new littlepig(); // line x1
myPig.eat();
myPig = new bigpig(); // line x2
myPig.eat();
-----------------------------------------------
如果我把line x1和line x2交换,一点问题都没有。
如果我们在使用myPig的时候不需要知道myPig具体如何做,岂不是符合oop的思想。
zzhphp 2001-09-14
  • 打赏
  • 举报
回复
to Virginer(里个那个里个棱) :
我认为优势有以下点:
1. 它可以起一个规范的作用,对于不同对象之间某些特性,它的操作,可以起到规范化,这样不论谁来实现,它的接口肯定是规范化。(如:sax,dom,这些不是太深入的学过,但它们定义的接口,确是规范的。)
2. 正如 sharetop(天生不笨) 所说的,java中不支持多层继承,那只有使用这个接口了。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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