接口是一种特殊的抽象类,抽象类通常需要继承来使用。
为什么要设计抽象类?如果是用于继承,普通类也可以用于继承。但实际中,有一些类,实例化它们并没有意义。比如animal,我们并不去实例化一个animal对象,而是去实例化一个具体的如bird ,tiger等,这样类中可以声明一些方法并不去实现,这样的方法就是抽象方法。
抽象类中可以存在普通方法,抽象类中可以不存在抽象方法。但存在抽象方法的类必须是抽象类。
由此可见抽象类的作用:
1 用来包含一些不去实现的方法。
2 用来明确这个类的作用(能否被实例化)
3 注意,继承后抽象方法需要重写。
更纯的抽象类是接口,表示它们看起来都是这样的,有以下特点:
1 完全抽象类,无任何实现
2 可用于多继承
3 包含属性,自动为public static final
4 方法自动为public abstract
5 应用于完全解耦,如用于策略模式,工厂等。