第十八条:接口优于抽象类

一、接口与抽象类的区别

接口:只允许定义方法,不允许实现方法。
抽象类:允许定义方法,并允许实现某些方法。


二、抽象类的缺点

概述:由于抽象类是继承制,说明如果使用了抽象类会改变类的层级。(层级指的是类的继承关系)
但是接口,就可以在任何层级上使用。这就导致了抽象类很多方法不如接口。
①、接口容易被更新,而抽象类却不容易被更新。
比如说:JAVA平台多了Comparable接口,许多类都可以实现该接口(接口可以无视层级的使用)。但是如果多了一个Comparable抽象类,其他类实现该抽象类,必须使用继承,使用继承就会破坏原有的类层级结构。(比如:某个类有三个子类,有两个类想使用Comparable类抽象的方法,但有一个子类不想使用Comparable类抽象的方法)。

②、接口是定义混合类型的理想选择
接口的优点:
首先,一个类可以创建多个接口,所以一个类可以成为多个类型。
其次,接口也可以表示为可选择的行为。也就是说如果我不需要我就不使用接口。
抽象类的缺点:
抽象类:无法拥有可选择的行为


③、接口可以实现无层次接口结构的类型
比如说:有歌唱家、演员两个接口。
<span style="font-size:18px;">public interface Singer{
    void sing();
}

public interface Actor{
    void act();
}</span>
但是一个人可以既是歌唱家,也可以是演员。
public class Person implements Singer,Actor{
   public void sing(){//};
   public void act(){};
}
//或者这样实现
public interface SingerActor extends Singer,Actor{
    void sing();
    void act(); 
<span style="font-size:18px;">}</span>
但是如果使用继承方式的话:
就必须要有三个类:歌手、演员、既是歌手又是演员。
如果身份再增加下去,就会以2*n递增。

三、抽象类的优点
①、结合接口实现骨架实现(一般被称为AbstractInterface Interface表示接口)
比如:AbstratMap、AbstartList等等。
什么是骨架实现,如何实现
简单来讲,就是抽象类继承接口,不实现基本类型的接口方法,实现需要
不实现基本类型接口的方法很好理解。 就是继承接口,然后再将无需实现的方法设为abstract,继续传递给子类实现。
那么什么叫做实现接口方法的逻辑呢。
比如说,有一个接口叫做Cook,其中有两个方法,①、放入的材料add() ②、制作的类型type() ③、制作cook();
public interface Cook{
  void add();
  void type();
  void cook();
然后我们创建抽象类继承这个接口
<span style="font-size:18px;">public abstract AbstractCook {
  abstract void add();
  abstract void type();
  public void cook(){
     //...根据上诉方法,制作具体类型的菜
  }
}</span>








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值