——语法层面的区别
- 成员区别
抽象类 变量,常量;有构造方法;有抽象方法,也有非抽象方法
接口 常量;抽象方法
- 关系区别
类与类 继承,单继承
类与接口 实现,可以单实现,也可以多实现
接口与接口 继承,单继承,多继承
——设计层面的区别
- 设计理念区别
抽象类 对类抽象,包括属性、行为
接口 对行为抽象,主要是行为
举例:
门和警报的例子
门:都有open0和close(两个动作,这个时候,我们可以分别使用抽象类和接口来定义这个抽象概念
//抽象类 public abstract class Door { public abstract void open (); public abstract void close (); } public abstract class Door { public abstract void open (); public abstract void close (); public abstract void alarm (); }
//接口 public interface Door { void open (); void close (); } public interface Door { void open (); void close (); void alarm (); }
public interface Alram {
void alarm() ;
public abstract class Door {
public abstract void open() ;
public abstract void close() ;
}
public class AlarmDoor extends Door implements Alarm {
public void oepn() {
//....
public void close () {
//....
public void alarm() {
//....
}
}
在这里,再次强调抽象类是对事物的抽象,而接口是对行为的抽象