抽象类和接口的区别

很多语言中,抽象类和接口的使用环境都很像,但是它们之间还是有很多区别的!

 

总结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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值