我们一般将一个抽象类中所有方法都是抽象方法的抽线类定义为接口,接口时由常量和抽象方法组成的特殊类,即接口里面连构造方法也没有。接口通常用“interface”关键字来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法。
例:定义一个接口
1 public interface inter_1 { 2 public static final int a = 10;//常量 3 abstract String Animal();//抽象方法 4 5 }
在语法中,一个接口可以有多个父接口,他们之间用逗号隔开。使用接口的目的时为了克服单继承的限制,一个类只能有一个父类但可以实现多个接口。一个类实现接口中的所有方法须用 implements关键字。
接口的实现类声明格式如下
[<修饰符>] class <类名> [extends <超类名>] [implements <接口1>,<接口2>, .....]
例2:
1 //定义A接口 2 interface A{ 3 String A_behavior = "行为"; 4 void run(); 5 void eat(); 6 } 7 // B类实现A接口 8 class B implements A{ 9 public void run(){ 10 System.out.println(A_behavior+":"+"在奔跑"); 11 } 12 public void eat(){ 13 System.out.println(A_behavior+":"+"在吃东西"); 14 } 15 } 16 public class Ex_1{ 17 public static void main(String args[]){ 18 B b = new B();//实例化B 19 b.run(); 20 b.eat(); 21 } 22 }
输出结果 应为 A的行为:B在奔跑
A的行为:B在吃东西
要特别注意的时一个类实现一个接口,必须实现接口中所有的抽象方法,不能实现某一个方法也必须写出一个空方法
接口特点归纳如下:
接口中的方法都是抽象的,不能实例化对象
接口中的属性只能是常量
当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否则需要实现接口中的所有方法
一个类通过implements实现接口时,可以实现多个接口,被实现的接口之间用逗号隔开,示例如下
interface Run{ 代码..... } interface Fly{ 代码..... } class Bird implements Run,Fly{ 代码.... }
interface A{ 代码..... } interface B{ 代码..... } Interface C extends A,B{ 代码..... }
class C extends B implements A{ 代码...... }