java面试题基础篇-07-接口和抽象类的区别

接口和抽象类的区别

  • 抽象类中可以存在普通成员函数,而在接口中的只能存在public abstract方法
  • 抽象类的成员变量可以是各种类型的,而在接口中的成员变量只能是public static final类型的
  • 抽象类只可以继承一个,而接口可以实现多个。

深入理解

  • 接口的设计目的,是对类的行为进行约束,也就是提供一种机制,可以强制要求不同的类中具有相同的行为,它只约束了行为的有无,但不对如何实现行为做具体的限制。
  • 抽象类的设计目的,是代码复用,当不同的类具有相同的行为,而其中一部分行为的实现方式一致时,可以让这些类都派生于一个抽象类。
  • 抽象类是对类本质的抽象,是is的关系,就像BMW is CAR,抽象类包含并实现子类的通用特性,将子类存在差异化的特性进行抽象,交给子类来实现。
  • 接口是对行为的抽象,是like的关系,就像BIRD like Aircraft,接口的核心是定义行为,即实现类可以做什么,至于实现类主题是谁,是如何实现的,接口并不关心。
  • 使用场景:当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,使用接口。
上一篇:javascript简单介绍


下一篇:理解Memcached的分布式