Java中接口和抽象类的区别?

不同点:

1.接口只有定义,不能有方法的实现,而抽象类可以有定义与实现,方法可在抽象类中实现。

2.一个类可以实现多个接口,但一个类只能继承一个抽象类。(实现接口的关键字为 implements,继承抽象类的关键字为extends

3.抽象类中可以有自己的数据成员(成员变量默认default,可在子类中被重新定义,也可被重新赋值),也可以有非抽象的方法;但接口中所有方法都是抽象的(不能有实现的方法),且成员变量默认为public static final,必须赋初值,不能被修改。
4.子类如果没有实现抽象类中的所有抽象方法那么子类也必须是抽象类;但是子类实现接口,则必须把接口中的所有抽象方法都实现。

5.接口中的方法默认都是public abstract类型的,也只能是这个类型,不能是static方法。static方法是类方法,它是不允许子类重写的(override)。但是抽象类允许有static方法。(面试看情况说不说)

 

相同点:

1.都不能被实例化

2.接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化

 

转载于:https://my.oschina.net/u/4120977/blog/3097563

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值