面向对象--接口与抽象类

接口和抽象类是面向编程中的两个重要的概念,你是否完全弄明白了呢?

接口和抽象类的区别

抽象类有哪些特性?

1、抽象类只能被继承,不能被实例化。也就是说不能使用new关键字来实例化一个抽象类

2、抽象类可以有属性和方法,其中方法可以实现,可以不实现,不实现的方法被称之为抽象方法,使用abstract关键字修饰

3、子类继承抽象类,必须实现所有的抽象方法

接口有哪些特性?

1、接口中不能包含属性,也就是成员变量

2、接口中只能声明方法,方法不能包含实现代码。(使用default和static修饰的方法例外,这是java8添加的新特性)

3、实现类实现接口,必须实现接口中的所有方法。

 

抽象类的作用?

抽象类主要解决的代码复用的问题

 

接口的作用?

接口相比于抽象类,更加侧重于解耦,提高代码的可扩展性。

 

什么时候使用接口,什么时候使用抽象类?

这个判断的标准比较简单,如果是is-a关系,且解决的是代码复用问题,使用抽象类

如果是has-a关系,解决的抽象而非代码复用问题,使用接口

 

从类的继承层次来看,抽象类是一个自下而上的过程,先有代码的复用,然后再抽象为一个父类(也就是抽象类)。而接口正好相反,是一个自上而下的过程,在编程的时候,一般都是先设计接口,再去考虑如何实现接口

 

参考:设计模式之美-王争

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值