您的位置:首页 > 其它

抽象类和接口的区别

2009-09-15 16:25 225 查看
很多语言中,抽象类和接口的使用环境都很像,但是它们之间还是有很多区别的!

总结4点:

1、语法不同

首先,定义方式不同,一个是abstract class, 一个是interface。 其次,前者中可以有非abstract的方法,可以有变量。而后者中所有的方法都是abstract的,一般没有变量,如果有变量,也必须是static final的。另外,接口中,不可以有private的方法。

2、由于java是单继承的,所以子类只能继承一个abstract的类,却可以implements多个接口。

3、当需要修改原先设计的时候,由于interface中不能有默认方法,所以每个implements它的类,都需要进行修改。而abstract class允许有默认方法,我们只要给新增的方法一个默认的定义,就可以不影响原有设计了。

4、最后一个,是出于对面向对象设计模式的理解来考虑的,据说是最重要的。由于继承关系联系的父类、子类,在本质上是一样的,他们是"is a"的关系。而implements interface的类,是"like a"的关系。

参考: http://fzfx88.javaeye.com/blog/115393
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: