做项目时,为了做出通用的编程,往往需要面向抽象编程,面向接口编程,那么什么时候使用抽象类,什么时候使用接口呢?
抽象类主要适用于关系密切的对象,接口适合为不相关的类提供通用功能。
抽象类与接口区别:
1. 接口定义类的公共行为,抽象类定义类的公共实现;
2. 一个类只能继承自一个类(抽象类),但是可以同时实现多个接口;
3.接口中不能有实现,但抽象类中可以有未实现的成员,也可以有实现的成员;
4.接口中未实现的方法必须在实现类中实现,抽象类中未实现成员必须在子类中重写;
例如:
1.鸽子会飞,F22飞机会飞,他们都实现了同一个接口“飞”,但F22飞机属于飞机抽象类,鸽子属于鸟抽象类;
2.就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);
一个门可以有锁(接口)也可以有门铃。门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。