抽象类与接口的区别
语法层面:
1 抽象类可以有自己的数据成员(默认是friendly的,在继承类中可以修改)也可以由非abstract的成员方法。继承类实现所有抽象方法,或者继承抽象方法自己也成为抽象类。
接口中则只能有静态不能被修改的成员(public static final)且必须给予初值和abstract方法(单不必标注abstract)。继承接口的类必须实现所有抽象方法。
2 抽象类不支持多重继承
接口支持多重继承
3 在抽象类中可以为方法赋予默认行为
接口中方法不能拥有默认行为(在修改时可能会有麻烦,需要改变所有实现类)
设计层面:
1 抽象类表示的是“is a”关系,而接口表示的是“like a”关系。