面试官问:说说抽象和接口的区别

面试官问:说说抽象和接口的区别
面试人员:卡卡一顿背书。。。。

在面向对象的概念中,所有对象都是通过类来描述的,但是反过来却不是这样的。
比如我们进行一个编辑软件的开发,里面有三角形,四边形,圆形等具体的概念。
但是他们都属于形态,形态就是一个抽象概念,正是因为有这种抽象概念,所以用于表现抽象概念的抽象类是不能够实例化的。

抽象类更多的是对整体的抽象(表示它是什么),接口是对行为的抽象(表示它能做什么)。

对于这个需求,我们下面的两种方式都可以实现,如果又来一个报警的功能,是不是第一时间想着在下面添加一个报警的方法。这样就违背了我们的接口隔离原则(接口隔离原则的含义是:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。也就是说,我们要为各个类建立专用的接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。 在程序设计中,依赖几个专用的接口要比依赖一个综合的接口更灵活。接口是设计时对外部设定的“契约”,通过分散定义多个接口,可以预防外来变更的扩散,提高系统的灵活性和可维护性。
在这里插入图片描述
为了满足这个条件,我们可以使用两个抽象类或者两个接口或者一个抽象类,一个接口来实现。

AlarmDoor在概念本质上是Door,同时它有具有报警的功能。
抽象在java中表示的是一种继承关系,而继承关系的本质上是 “is-a”关系,
所以对于AlarmDoor我们应该用抽象的方式来定义,用接口的方式来实现它的报警行为。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值