JavaSE面试题——2.接口和抽象类的区别

一、接口和抽象类的相同点

① 接口和抽象类都不能被实例化,它们用于被其他类实现和继承

② 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法

二、接口和抽象类的区别

① 接口里只能包含抽象方法,静态方法和默认方法,不能为方法提供实现,也就是方法不能书写方法体,而抽象类中的普通方法可以为方法提供实现

② 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是被public static final 修饰的常量,常量必须赋值

③ 接口中不能包含构造器,而抽象类中可以包含构造器,抽象类中的构造器并不是用于创建对象,而是让其子类调用构造器来完成属于抽象类的初始化操作

④ 接口里不能包含初始化代码块,但抽象类里完全可以包含初始化代码块

⑤ 一个类只能继承一个抽象类,而一个类却可以实现多个接口

三、什么时候使用抽象类和接口?

抽象类描述的是事物的本质,而接口描述的是事物的功能

当需要为一些类提供公共的实现代码时,和规范子类行为时,应优先考虑抽象类。因为抽象类中的非抽象方法可以被子类继承下来,使实现功能的代码更简单,并且必须实现抽象方法

当注重代码的扩展性跟可维护性时,应当优先采用接口,一般使用接口的情况更多

如果想实现多重继承,就必须使用接口,由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口,因此你就可以使用接口来实现多重继承

四、接口和抽象类的设计目的

抽象类:强调的是把共同(共有、相同)的属性、方法抽象出来,统一写在一个地方,它们的实现代码是一样的,方便维护(利用的是继承这个特性),也用来规范子类的行为,子类必须重写抽象类中的抽象方法

接口:抽象的行为,同一种行为有不同的实现方式,当多个对象都拥有相同的行为,但是行为的具体实现方式不一样的时候可以用接口抽象(利用的是多态特性)


JavaSE面试题整理

JavaSE面试题——1.面向对象和面向过程有什么区别?

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值