何时选择抽象类
1.你希望在几个密切相关类之间共享代码
2.你希望子类具有许多公共的方法或者属性非 public 修饰
3.你想要声明非静态或非 final 的属性
何时选择接口
1.你希望实现接口的类之间没有很强的相关性
2.你希望指定特定的行为,但不关心谁实现
3.你想要实现多重继承
参考
When to Use Abstract Class and Interface
1.你希望在几个密切相关类之间共享代码
2.你希望子类具有许多公共的方法或者属性非 public 修饰
3.你想要声明非静态或非 final 的属性
1.你希望实现接口的类之间没有很强的相关性
2.你希望指定特定的行为,但不关心谁实现
3.你想要实现多重继承
When to Use Abstract Class and Interface