美文网首页
接口优于抽象类

接口优于抽象类

作者: 没走过的二丁目 | 来源:发表于2018-06-06 15:59 被阅读0次

Java程序设计语言提供了接口和抽象类两种机制来定义允多个实现的类型。这两种机制的主要区别有

          1)抽象类允许包含某些方法的实现,但是接口则不允许。

          2)为了实现由抽象类定义的类型,类必须成为抽象类的一个子类。

          3)因为Java只允许单继承,所以抽象类作为类型定义受到了极大的限制,但是一个类可以实现多个接口。

现有类可以很容易被更新,以实现新的接口。一般来说无法更新现有的类来扩展新的抽象类,如果希望两个类扩展同一个抽象类,就必须把抽象类放到类型层次的高处,以便这两个类的一个祖先成为他的子类,遗憾的是这样会伤害到类层次,迫使这个公共祖先的所有后代类都扩展这个新的抽象类,无论它对于这些后代类是否合适
接口是定义mixin(混合类型)的理想选择
接口的优点:
首先,一个类可以创建多个接口,所以一个类可以成为多个类型。
其次,接口也可以表示为可选择的行为。也就是说如果我不需要我就不使用接口。
抽象类的缺点:
抽象类:无法拥有可选择的行为
接口允许我们构造非层次结构的类型框架。类型层次对于组织某些事物是非常合适的,但是其他有些事物并不能被整齐的组织成一个严格的层次结构。举个例子 比如说:有歌唱家、演员两个接口。

public interface Singer{  
    void sing();  
}  
public interface Actor{  
    void act();  
}

但是一个人既可以是歌唱家也可以是演员

public class Person implements Singer,Actor{  
   public void sing(){//};  
   public void act(){};  
}  

你并不总是需要这样的灵活性,但是一旦你需要的时候,接口可就成了救世主**
抽象类结合接口实现骨架实现(一般被称为AbstractInterface Interface表示接口)
比如:AbstratMap、AbstartList等等。举个例子:

public interface Cook{  
  void add();  
  void type();  
  void cook();
}
public abstract AbstractCook implements Cook {  
  abstract void add();  
  abstract void type();  
  public void cook(){  
     //...根据上诉方法,制作具体类型的菜  
  }  

相关文章

  • 提示二十

    今天来看提示二十: 接口优于抽象类。 Java 有两种机制来定义允许多个实现的类型:接口和抽象类。 接口有如下几个...

  • 接口优于抽象类

    Java程序设计语言提供了接口和抽象类两种机制来定义允多个实现的类型。这两种机制的主要区别有 现有类可以很容易被更...

  • 接口优于抽象类

    第18条:接口优于抽象类 1.内容向导 2.接口的优点 现有的类可以很容易的被更新,以实现新的接口。如果你前期编写...

  • 第18条:接口优于抽象类

    java中可以用来定义允许多个实现的类型有两种:接口和抽象类。 接口和抽象类的区别: 1,抽象类中可以存在某些方法...

  • 5.5-全栈Java笔记:接口的定义和使用

    接口interface 接口的作用 为什么需要接口?接口和抽象类的区别? 接口就是比“抽象类”还“抽象”的“抽象类...

  • 建造者模式

    建造者抽象类或接口 建造者抽象类或接口实现类 产品抽象类或接口 产品抽象类或接口实现类 使用

  • 代理(委托)模式

    主题抽象类或接口 主题抽象类或接口实际类 主题抽象类或接口代理类 使用

  • 访问者模式

    元素抽象类或接口 元素抽象类或接口实现类 访问者抽象类或接口 访问者抽象类或接口实现类 场景使用

  • Java 接口 抽象类 枚举

    接口 使用接口对行为进行抽象 接口: 抽象类 抽象类是用来捕捉子类的通用特性的,包括属性及行为。 抽象类: 抽象类...

  • 抽象类与接口

    抽象类 一般将父类定义为抽象类。语法如下 接口 接口简介 接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的...

网友评论

      本文标题:接口优于抽象类

      本文链接:https://www.haomeiwen.com/subject/dpqujftx.html