浅谈接口和抽象类的区别

从接触java开始,一直对接口和抽象类的概念有点模糊不清,在日常的应用中基本用的是方法的实现,于是就选择了接口,而很少用到抽象类,如今,有了空闲的时间了,在网上找了很多有关二者的资料,发现他们的不同之处,写了下来,和大家一起分享。

1.首先说下接口,我们在定义接口的时候就是直接以public interface Xxxo的形势来定义接口,然后在接口中以public void xxxx()形势来定义方法。其实在接口中的所有方法默认的都是抽象类型的,也就是说若是某个类要实现此接口,必须实现该接口中所有的方法,方法可以为空,但是要实现。而抽象类则不是这样的,其子类可以不完全继承,只要定义该类也为抽象类即可。接口中的变量默认的类型是public static final类型的。

2.抽象类可以有构造方法,而接口没有。

3.抽象类中有普通的成员变量,但是接口中的变量只能是public static final类型的。

4.抽象类中可以有非抽象的方法,而接口中的方法都是抽象的,类型是public abstract类型的。

5.抽象类中可以有静态的方法。

6.对于一个类,只能继承一个抽象类,但是可以实现多个方法。

7.抽象类中的方法类型不是单一的,可以为protect类型的,而接口中只能是public类型的

如下图所示:

若是定义成private类型的会自动提示我们只能为public类型的。

(有缺少或者不对的地方欢迎补充)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值