#### 接口与抽象类的关系

1. 类之间的共同行为，即可以用**父类与子类**的方式来表示，也可以用**接口**来表示。
2. 接口与抽象类很相似，但它的目的是指明类的共同行为，这些类可能是相关的，也可能是不相关的。
3. 类与类之间的继承关系是**扩展**(extends)，而类与接口之间的继承关系是**实现**(implements)。
4. 一个类只能继承**一个**父类，但可以实现**多个**接口。
5. 一个接口可以继承多个接口。
6. 抽象类的属性是**无限制的**，接口的属性必须是**public static final**。
7. 抽象类**有**构造方法，接口**没有**构造方法。
8. 抽象类对方法**无限制**，接口的所有方法必须是**公共的抽象实例方法**。

#### 抽象类

1. 在继承的层次结构中，父类总是越来越抽象，子类总是越来越具体。当父类设计的非常抽象以至于没有任何的实例的时候，就成为了**抽象类**。
2. 当父类的方法依赖于子类的具体属性，而无法在父类中实现时，这样的方法就叫**抽象方法**。
3. 为什么要有抽象方法呢？因为这样可以方便两个属性不同的子类之间进行运算。
4. 抽象类包含抽象方法，不可用于创建对象。这些抽象方法将在抽象类的子类中实现。抽象类和抽象方法用**abstract**关键字修饰。注意：抽象类也可以**不包含**抽象方法，抽象类的父类也可能是具体的。
5. 抽象类的**构造方法**为protected，因为它只被子类使用。

####接口

1. **接口**是一种与**类**相似的结构，只包含常量和抽象方法。
2. 接口使用**interface**关键字修饰。