1.抽象类
抽象类在概念上描述的是抽象世界,抽象类刻画了公有行为的特征,并且通过继承机制传送给它的派生类。抽象类使用关键字abstract 修饰,语法如下:
abstract class 类名{ 类体; }
抽象方法是指在抽象类中某些成员方法没有具体的实现,只有方法声明。抽象方法使用关键字abstract 修饰,格式如下:
public abstract 返回类型 方法名([参数列表]);
抽象类和抽象方法的具体规则如下:
1.用abstract 关键字修饰一个类时,该类叫做抽象类,用abstract类修饰一个方法时,该方法叫做抽象方法。
2.含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
3.抽象方法只需声明,不需实现。
4.在抽象类中可以有数据成员,可以有零个或多个抽象方法,也可以由非抽象方法。
5.抽象类不能被实例化。
6.static、private、final 方法不能是抽象的。
7.final 类型的类不能包含抽象方法。
8.抽象类的子类必须实现父类中所有的抽象方法,否则,该类必须定义为抽象类。
2.接口
2.1接口的定义
接口是特殊的抽象类。接口的出现弥补了java只支持单继承的不足,它可以用来完成多继承的一些功能。在java中,使用关键字interface 来定义接口,借口的定义和类的定义很相似,分为接口的声明和接口体。但在接口中,所有的方法都是抽象的,所有的变量都是static常量,语法如下:
[修饰符] interface 接口名 [extends 父接口列表]{ 静态常量; 方法声明; }
注:
1.接口的修饰符只有public 和默认修饰符两种。
2.接口名:是所创建的该接口的名字,一般用能反映该接口实际意义的英文名词表示。
3.接口中的数据成员默认是 public static final 修饰的,即接口中的数据成员是全局静态常量,必须在定义时赋予常量初始值。
4.在接口中所有的方法都是 public abstract 的。
5.接口只能继承接口,不能继承类,但通过接口可以实现多重继承。
6.接口没有构造方法,他们不能直接被实例化,但允许有接口类型的变量。
2.2接口的实现
在java中,使用implements关键字来实现接口,语法如下:
public class 类名 [extends 父类] implements 接口列表{ 类体; }
3.抽象类和借口的异同
相同点:1.都不能被实例化
2.都可以应用于多态
不同点:1.反映的设计理念不同
2.接口支持多继承;抽象类不能实现多继承。
3.接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
4.接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
5.接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
6.接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
7.接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。
java抽象类和接口