java的抽象类与接口的区别

首先抽象类对应的是子类,接口对应的实现。

也就是抽象类的子类继承了父类的全部特性,是一个更具体的父类。就像兔子类继承动物类。
而接口的实现则是具备有自己的特性,他和接口是两个不同的类,只是它实现了接口中所有的方法。
所以在概念上抽象类和接口的作用是完全不同的。所以抽象类与子类的关系是"is-a",而接口与实现的关系是"like a"
附:

意义使用场景举例
is-aA是B继承兔子继承动物类
has-aA有B在A类中创建类B对象在员工类中创建电脑类的对象
like-aA组合BA是接口B的实现空调实现了制冷接口中的方法
在语法使用中的区别:

1.抽象类用extends,接口用implements
2.抽象类有构造方法,接口没有
3.在Java中只能存在单继承,所有抽象类只能是单继承,但是接口可以做到多实现。即连续多个implements
4.抽象类 中可以有普通方法,接口中只能是抽象方法(JDK1.7之前,1.8以后接口也可以有普通方法)
5.抽象类中可以有普通变量,接口中只能存在被public static final 修饰的静态最终常量
6.接口类中的方法修饰符可以是public、private和protected,而接口中的方法一定是public的。
7.如果一个类中有抽象方法,那么一定要被声明为抽象类 。而声明为抽象类的方法可以没有抽象方法。如果一个接口中有方法,那一定得是抽象方法。
8.补充说明:抽象方法没有方法体。大括号也不能有。
9.抽象类不能被实例化。
10.继承抽象类的子类必须实现父类所有方法。否则也要声明为抽象。接口的实现类也必须实现接口中的所有方法。
11.JDK 1.8以前,抽象类的方法默认访问权限为protected,JDK 1.8时,抽象类的方法默认访问权限变为default。JDK 1.8以前,接口中的方法必须是public的,JDK 1.8时,接口中的方法可以是public的,也可以是default的,JDK 1.9时,接口中的方法可以是private的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值