java基础总结(面试高频问题)十:java抽象类和接口的区别

1:抽象类:关键字abstract修饰
(1)可以修饰类,也可以修饰方法;
(2)修饰类的话,抽象类可以创建构造方法,但是不可以实例化,创建构造方法的目的是为了子类的调用;
(3)有抽象方法的类一定是抽象类,抽象类可以没有抽象方法,抽象类可以有非抽象的方法;
(4)如果抽象类的子类重写了所有的抽象方法,子类可以是非抽象的,且可以实例化;
(5)如果抽象类的子类没有重写所有的抽象方法,则子类是抽象类,不可以实例化;

2:接口:关键字interface修饰
(1)接口不能实例化,不能创建构造方法;
(2)接口里的方法可以是静态方法(jdk1.8之后)、默认方法(default 返回类型 方法名(){})或者抽象方法,这里的抽象方法可以省略关键字abstract,这里的静态方法只能由接口自己调用(接口名.方法名),这里的默认方法可以使用实现类对象调用;
(3)一个类可以实现多个接口,一个接口可以继承接口;
(4)接口里的方法必须是public访问权限,可以省略public(因为不写的话默认就是public访问权限);
(5)接口可以含有变量,但是接口中的变量会被隐式修饰为public static final,并且只能是public类型;

3:抽象类和接口的区别:
(1)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口;
(2)接口只有定义,不能有方法的实现(jdk1.8以后可以定义default方法体),而抽象类可以有定义与实现,方法可在抽象类中实现;
(3)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的;
(4)一个类只能继承一个抽象类,而一个类却可以实现多个接口;
(5)接口强调特定功能的实现,而抽象类强调所属关系;
(6)抽象类使用的是 is a 关系,接口使用的 like a 关系;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值