一、定义
Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
 
接口定义的一般形式为:
[访问控制符]interface <接口名> {
类型标识符final 符号常量名java接口有没有构造方法n = 常数;
返回值类型  方法名([参数列表]);
      …
}
 
二、接口的特点
1Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用"_"分隔)
2Java接口中的方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化
3Java接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法
4、接口中没有构造方法,不能被实例化
5、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口
6Java接口必须通过类来实现它的抽象方法
7、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类
8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例
9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.
 
三、接口的用法
1、精简程序结构,免除重复定义
比如,有两个及上的的类拥有相同的方法,但是实现功能不一样,就可以定义一个接口,将这个方法提炼出来,在需要使用该方法的类中去实现,就免除了多个类定义系统方法的麻烦。
举例:鸟类和昆虫类都具有飞行的功能,这个功能是相同的,但是其它功能是不同的,在程序实现的过程中,就可以定义一个接口,专门描述飞行。
下图是分别定义鸟类和昆虫类,其都有飞行的方法。
 
        下图定义了接口,其类图如下:
 
实现代码如下:
[java] view plaincopyprint?
1. interface   Flyanimal{     
2.    void fly(); 
3.
4. class   Insect {     
5.    int  legnum=6
6.
7. class  Bird {     
8.   int  legnum=2
9.   void egg(){}; 
10.
11. class Ant extendsInsect implements  Flyanimal { 
12.    public void fly(){ 
13.        System.out.println("Ant can  fly"); 
14.    } 
15.
16. classPigeon  extends Bird implements  Flyanimal { 
17.    public void fly(){ 
18.        System.out.println("pigeon  can fly"); 
19.    } 
20.    public void egg(){ 
21.        System.out.println("pigeon  can lay  eggs "); 
22.    } 
23.
24. public classInterfaceDemo{ 
25.    public static void main(String args[]){ 
26.      Ant a=new Ant(); 
27.      a.fly(); 
28.      System.out.println("Ant's legs are"+ a.legnum); 
29.      Pigeon p= new Pigeon(); 
30.     p.fly(); 
31.     &(); 
32.   } 
33.
interface  Flyanimal{ 
  void fly();
}
class  Insect { 
  int  legnum=6;
}
class  Bird { 
  int  legnum=2;
  void egg(){};
}
class Ant extendsInsect implements  Flyanimal {
  public void fly(){
      System.out.println("Ant can  fly");
  }
}
classPigeon  extends Bird implements  Flyanimal {
  public void fly(){
      System.out.println("pigeon  can fly");
  }
  public void egg(){
      System.out.println("pigeon  can lay  eggs ");
  }
}
public classInterfaceDemo{
  public static void main(String args[]){
    Ant a=new Ant();
    a.fly();
    System.out.println("Ant's legs are"+ a.legnum);
    Pigeon p= new Pigeon();
    p.fly();
    p.egg();
  }
}
 
程序运行结果:
Ant can  fly
Ant'slegs  are 6
pigeon  can fly
pigeon  can lay  eggs
 
 
二、拓展程序功能,应对需求变化。
        假设一个学校接待方面的程序,招待不同身份的人的食宿问题,其对应规则如下:
身份
宿
学生
食堂
宿舍
教师
教师食堂
学校公寓
学生家长
招待所
招待所
理论上,当然可以对每个不同身份的人各定义一个对应的类,并实现各自的方法,但是观察这写类,可以归纳出其有一个共同的模板,即食、宿问题。这时候,就可以发挥接口的功能了。实现代码如下:
[java] view plaincopyprint?
1. interface Person{ 
2.     void eat(); 
3.     void sleep(); 
4.
5.    
6. class Student implements Person{ 
7.     public void eat(){ 
8.        System.out.println("学生去食堂吃饭!"); 
9.     } 
10.     public void sleep(){ 
11.        System.out.println("学生回寝室睡觉!"); 
12.     } 
13.
14.    
15. class Teacher implements Person{ 
16.     public void eat(){ 
17.        System.out.println("教师去教工餐厅吃饭!"); 
18.     } 
19.     public void sleep(){ 
20.        System.out.println("教师回学校公寓睡觉!"); 
21.     } 
22.
23.  class Parents implements Person{ 
24.     public void eat(){ 
25.        System.out.println("家长去招待所饭馆吃饭!"); 
26.     } 
27.     public void sleep(){ 
28.        System.out.println("家长回招待所睡觉!"); 
29.     } 
30.
31.    
32. public class PersonInterface{ 
33.          public static void main(String[] args) 
34.          { 
35.                    Person p=new Student(); 
36.                    p.eat(); 
37.                    p.sleep(); 
38.                    p=new Teacher(); 
39.                    p.eat(); 
40.                    p.sleep(); 
41.                    p=new Parents(); 
42.                    p.eat(); 
43.                    p.sleep(); 
44.          } 
45.
interfacePerson{
    void eat();
    void sleep();
}
class Studentimplements Person{
    public void eat(){
      System.out.println("学生去食堂吃饭!");
    }
    public void sleep(){
      System.out.println("学生回寝室睡觉!");
    }
}
class Teacherimplements Person{
    public void eat(){
      System.out.println("教师去教工餐厅吃饭!");
    }
    public void sleep(){
      System.out.println("教师回学校公寓睡觉!");
    }
}
class Parents implements Person{
    publicvoid eat(){
      System.out.println("家长去招待所饭馆吃饭!");
    }
    public void sleep(){
      System.out.println("家长回招待所睡觉!");
    }
}
public class PersonInterface{

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。