前言
接口和抽象类?继承和实现?默认方法、静态方法、抽象方法…?这些到底有什么区别和联系?Java新手(包括我这个入门2年的菜鸡)常常都会忽视掉接口的概念,也不会关注抽象类的运用,更别提这两者的差别了…
总览(必看)
对接口、抽象类、基类我做了如下的图来说明:
接口:与其说是不能被实例化的类,更像是一种约定子类可以同时遵守多个约定,实现多个接口
抽象类:是对同类事物共有属性和行为的抽象模板,每个子类只能继承一个模板
基类:是对接口/抽象类默认方法的一般实现,使得子类不需要对接口/抽象类的方法完全重写,更方便使用
一、接口是“契约”
在这里我强调接口是一种“契约”的概念,是从接口这个概念设计的目的出发,尽管从接口的定义方面:如下满足关键字iterface声明,字段内容默认为public static 方法默认public abstract 即可
public interface interfaceName{
int STATUS=1;
//...
void interfaceFunction();
//...
}
尽管接口定义与一般的类定义差别不但,但是其中字段一般保存不变,方法共有但是不实现这些默认设置,恰巧说明了接口作为“契约”的功能。
声明一个接口——我们使用其静态的字段作为状态标识,默认的方法作为使用该接口的客户和实现该方法的子类的纽带,属于