抽象类与接口
开发工具与关键技术:java
作者:彭浩达
撰写时间:2019年 5月 26日
抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。但由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。简单来说就是Java可以创建一种类专门用来当作父类,这种类称为“抽象类”。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样
抽象类定义规则如下:
⑴ 抽象类和抽象方法都必须用abstract关键字来修饰。
⑵ 抽象类不能被直接实例化,也就是不能直接用new关键字去产生对象。
⑶ 抽象方法只需声明,而不需实现。
⑷ 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合, 接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的 所有方法,否则就必须声明为抽象类
接口与抽象类非常相似,但与抽象类有以下两点不同:
⑴ 接口里的数据成员必须初始化,且数据成员均为常量
⑵ 接口里的方法必须全部声明为abstract,也就是说,接口不能像抽象类一样保有一般的方法,必须全部都是“抽象方法”。
但接口有个特性:接口中每一个方法都是隐式抽象的,声明时不需要abstract关键字。编译时会自动为接口里定义的方法添加abstract修饰符