妹妹有个关于接口与抽象类的问题,希望高手们帮忙~~~

glacier86400 2005-03-23 10:19:40
接口与抽象类到底有哪几点不同?
谢谢!!
...全文
141 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuozhi 2005-03-23
  • 打赏
  • 举报
回复
接口定义的所有方法还没有实现.
抽象类是有某些方法还没有实现.
pier2008 2005-03-23
  • 打赏
  • 举报
回复
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

  接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
quiton 2005-03-23
  • 打赏
  • 举报
回复
在abstract class的定义中,我们可以赋予方法的默认行为。但是在interface的定义中,方法却不能拥有默认行为,为了绕过这个限制,必须使用委托,但是这会 增加一些复杂性,有时会造成很大的麻烦。

在接口中不能定义默认行为还存在另一个比较严重的问题,那就是可能会造成维护上的麻烦。因为如果后来想修改类的界面(一般通过abstract class或者interface来表示)以适应新的情况(比如,添加新的方法或者给已用的方法中添加新的参数)时,就会非常的麻烦,可能要花费很多的时间(对于派生类很多的情况,尤为如此)。但是如果界面是通过abstract class来实现的,那么可能就只需要修改定义在abstract class中的默认行为就可以了。

楼主妹妹,问了很多问题,怎么从来不见你结贴啊?

the81919 2005-03-23
  • 打赏
  • 举报
回复
抽象类里有抽象方法也有方法实体.
接口只有抽象方法
007remember 2005-03-23
  • 打赏
  • 举报
回复

您太客气啦
glacier86400 2005-03-23
  • 打赏
  • 举报
回复
从网上找的:
-------------------------
抽象类和接口有何区别?
从书上摘下来的,还是比较好懂的:
1.抽象类是一个不完全的类,需要进一步专业化.接口只是一个行为的规范或规定;
2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
3.一个类一次可以实现若干个接口,但是只能扩展一个父类
4.接口可以用于支持回调,而继承并不具备这个特点.
有些直接就是接口与类的区别.第四点我不是很明白......
一个类如果要实现某个接口,除非它实现了该接口中承诺的所有方法,否则(即未实现或者仅仅实现部分方法),该类必须被声明为抽象类.而该类的子类也继承了这一特性.
-------------------------------
他说的对吗?
还有要补充的吗?
谢谢!!
007remember 2005-03-23
  • 打赏
  • 举报
回复
含有abstract methods的类称为abstract class
abstract methods:是不完全的函数,只有声明而没有本体(摘自《java编程思想》)


interface:
interface更胜于abstract class,
建议您买本《java编程思想》
一步到位
zhoudut 2005-03-23
  • 打赏
  • 举报
回复
抽象类可以有实现
接口不可以有实现
我觉得接口就相当于c++里面的纯虚类
老無所依 2005-03-23
  • 打赏
  • 举报
回复
大致了解一些,
不过还不能真正体会二者差别,继续学习中。。。 帮顶!

62,634

社区成员

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

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