抽象类和接口的区别
- 成员区别:
 抽象类:变量,常量,有构造方法,抽象方法,非抽象方法
 接口:常量,抽象方法
- 关系区别:
 类和类:继承,单继承
 类与接口:实现,可以单实现,可以多实现
 接口与接口:继承,单继承,多继承
- 设计层面区别:
 抽象类:对事物的抽象,包括属性和行为
 接口:对行为抽象,主要是行为
例如:打开一个门会发出报警声音,但不一定所有的门都会发出报警:
抽象类:门,打开和关闭方法
 接口:报警器,报警方法
 原因:
- 报警器作为接口是因为不一定所有门打开和关闭都会发出报警声音,可以做有无实现接口
- 门作为抽象类是因为一定会有打开和关闭门的操作
图文和代码形式讲解:
图:Alram接口(报警器),Door抽象类(门),DemoImpl(测试类)
 
Alram(接口)
package CCom.Cnn;
//单独定义一个报警器,是为了避免所有的门未必都会发出声音
public interface Alram {
    void alram();//有无发出报警声音
}
Door(抽象类)
package CCom.Cnn;
//打开和关闭在门类
public abstract class Door {
    public abstract void open();//打开行为
    public abstract void close();//关闭行为
}//门类
DemoImpl(测试类)
package CCom.Cnn;
public class DemoImpl extends Door implements Alram {
    @Override
    public void open() {
        //对门这个事物进行打开行为
    }
    @Override
    public void close() {
        //对门这个事物进行关闭行为
    }
    /*
       前者是抽象类,后者是接口
     */
    @Override
    public void alram() {
        //报警器是否发出声音 可有可无(是否实现报警器接口)
    }
}










