首先,我们先确定接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
在Java中类只能单继承,而接口可以多实现。
接口技术主要用来描述类具有什么功能,而不给出每个功能的具体实现,这又和抽象类有点像。总的来说,接口和抽象类都是只定义不实现的。下面我们来看看接口和抽象的具体定义。
接口
** “如果类遵从某个特定接口,那么就履行这项服务”也就是说任何实现像Comparable接口的类都需要包含comparaTo方法,并且这个方法的参数必须是一个object对象,返回一个整形数值。** 接口中的所有方法自动的属于public,也就是说在接口中说明方法时,不需要加public。
接口关键字:interface(接口),implements(实现)
为了让类实现一个接口,通常步骤:
- 将类声明为实现给定的接口
- 对接口中的所有方法进行定义
接口的特性
- 接口不是类,不能使用new运算符来实例化接口。但可以声明接口的变量:Comparable x;(Comparable 是一个接口)- 接口中不能包含实例域或静态方法,但可以包含常量。
- 接口侧重于封装
- 接口可以多实现
抽象类
当一个类中含有抽象方法时,这个类就是抽象类,(就算类中没有抽象方法,也可以声明为抽象类)抽象类产生的目的就是被继承。抽象类一般不包含具体实现方法,它的具体实现在子类中。扩展抽象类有两种选择:
1.在抽象类中定义部分抽象类方法或不定义抽象类方法,这样子类也得标记成抽象类。
2.在抽象类中定义全部的抽象方法,这样子类就不是抽象类了。
抽象类的特性
- 抽象类也不能实例化,但可以定义抽象类的对象变量,并且只能引用非抽象子类的对象:Person p=new Student();(Student是抽象类Person的子类)。- 抽象类侧重于抽象
- 抽象类只能单继承
总之,接口是对功能的描述,就像人拥有跑的功能,这就可以用接口来声明; 而抽象类是对整体的描述,就像学生是人,人拥有的特征,学生都有。人就是一个抽象类