抽象类和接口很多人分不清。
抽象类是什么?抽象类是一种特殊的类,它不能被实例化,只能被作为基类使用。抽象类中可以定义抽象方法和非抽象方法,其中抽象方法没有具体的实现代码,必须在子类中进行重写;非抽象方法有具体的实现代码,可以直接在抽象类中调用。抽象类的作用是为子类提供一个通用的框架和规范,使得子类可以在不改变原有代码的基础上进行扩展和修改。
接口是什么?接口是一种定义行为的抽象类型,它定义了一个类或结构体应该具有的属性、方法和事件的标准集合,但并不实现它们的功能。它只是定义了一种合约,以指定要求接口的对象所应该具备的一组行为和能力。
抽象类和接口的区别,需要真正理解,理解起来可深可浅。
它们都可以用来定义对象的类型,都可以被其他类实现,是不完整的类。
抽象类只能单继承,只能有一个父类,而接口则是一种补充,可以通过实现多个接口来完成多个功能。
在UI设计界面,并不是每一个界面都需要某个功能时,这个就用接口来实现,而不用抽象类。
为了更加形象的比对抽象类和接口,举个例子。例如现在有几种鸟,玩具鸟,水鸟,飞鸟。那么抽象类就可以理解为对鸟的一种描述,因为继承了这个抽象类,我就可以称呼它为鸟,但是鸟具体的功能又有差别,比如玩具鸟可以随便玩弄,水鸟会游泳,飞鸟拥有飞的能力,那么这些具体的功能赋予我们就可以用接口,这样的一个接口代表的是一种能力,游泳的技能,飞行的技能。有了这样的接口不能说它就是鸟,只是说有了这种技能,比如飞机也可以飞,它就相当于是继承了飞翔这种能力的接口,但它不能成为鸟。也就是说,接口可以当做是对抽象类具体能力上的补充,是一种完善。
能用抽象类的时候就不要用接口,抽象类是一种对最基本特点的描述,就好比一个事物能被称作“鸟”,那它必须要有鸟的外形,这样我们才能称作鸟,但又有具体能力上的区分,我们就能依此分成玩具鸟,水鸟,飞鸟等。