Java面试一百道(第七题)-接口和抽象类的区别?

接口和抽象类是Java中实现多态的两种方式。抽象类可以包含成员变量和普通方法,而接口只允许有静态和默认方法(1.8后)。一个类只能继承一个抽象类,但能实现多个接口。接口强调的是'是什么'(isa),抽象类强调的是'像什么'(likea)。1.8后,默认方法允许接口扩展已有功能,静态方法不能被重写。选择使用时,应根据类的继承关系和功能需求来决定。
摘要由CSDN通过智能技术生成

接口和抽象类的区别?

答:

抽象类可以存在普通成员函数,接口中在1.8之前,只有抽象方法,而1.8有静态和默认接口;

抽象类的成员变量可以提供多个类型,接口只能是public static final 修饰;

一个类只能有一个抽象类,但是可以有多个接口。

在JDK1.8以后,如果说你已经写好的接口被许多子类继承,你又需要重写和新增方法给个别子类使用,就可以用到JDK1.8新增的默认和静态接口;

默认方法可以选择实现与否,静态方法不能重新实现

default 定义的普通方法,通过子类对象调用,所有子类均拥有此方法;

static定义的静态方法,通过接口名称直接调用。

本质:

接口是is a ,抽象类是like a 

举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。抽象类的话,密码门和铁门都是门,它们都存在一个开门和关门的动作,但他们的本质都是门,因为他们这些操作都是基于自己是个门而实现的,抽象则是本质的抽象。

具象:具体存在的事物

抽象:用一些其他东西来描述一个具体存在的事物,比如说说到门你就会浮想出门的样子,抽象一定是基于具象而存在的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值