abstract
抽象类是java中的重要特点之一,可以将一个类,方法使用abstract关键字修饰,使用abstract修饰的类无法被实例化,使用abstract修饰的方法不能有具体的实现,必须由子类实现。
abstract class 类名称{
//已实现方法
//未实现方法(abstract method)
}
关于抽象类
1. 抽象类中不一定包含抽象方法;
2. 抽象类中的抽象方法不能有实现体;
3. 子类对抽象类继承了则子类必须实现抽象类中的抽象方法;
4. 抽象类也可继承抽象类(只能继承一个直接抽象类);
5. 抽象类包含构造器,但是无法实例化。
interface
interface,是一种比抽象类更纯粹的结构,接口中只能存在抽象方法和常量(接口是一组抽象方法和常量的集合),接口并不是类,所以没有构造器;一般可以由具体类对接口进行实现,并且具体类必须实现接口中的所有方法。
接口语法:
<modifier> interface <name>[extends <superinterface>] {
<attribute_declarations>
<method_declarations>
}
在java中实现类还可以实现多个接口以弥补类只能单继承的缺陷,例如还有一个接口Singable,里面包含一个sing方法,此时实现类除了实现Flyable接口外还能实现Singable接口,但是实现类必须对所有接口的方法进行实现。
接口与抽象类的区别
1. 接口是一种更纯粹的抽象结构;
2. 接口是对行为的抽象(接口描述动词),抽象类是对一些类型的抽象(抽象类描述名词);
3. 一个类只能存在一个直接父类,但是类可以实现多个接口(实现类必须实现所有的方法);
4. 接口可以继承接口,并且能同时继承多个接口,抽象类只能直接继承一个抽象类。