1. 编程学习网 > 编程教程 > java教程 > 第三十二篇 Java接口(Interface)

第三十二篇 Java接口(Interface)

第24章-Java接口(Interface)
接口在Java编程语言中是一个抽象类型也是抽象方法的集合,接口通常用Interface来声明。
类可以通过继承接口的方式来继承接口的抽象类方法。
接口不是类编写方式却和类的方法和类相似,但是他们仍然属于不同的概念。类描述的是对象的属性方法而接口则包含类要实现的方法。除非接口要实现的的类是抽象类不然就得定义接口的所有方法。
接口无法实例化,但可以被实现,一个实现接口的类必须要实现接口内所描述的所有方法,否则就必须要声明抽象。接口类型可以用来声明一个变量,他们可以成为一个空指针亦或是被绑定在一个以此接口实现的对象。
 
接口与类似的地方:
1.一个接口可以有多种实现的方法。
2.接口文件保存在.java结尾文件中,文件名则使用接口名。
3.接口的字节码文件保存在.class结尾的文件。
4.接口相应的字节码文件必须在与包名称相匹配的目录结构中

 
接口与类的区别:
1. 接口不能用于实例对象化。
2. 接口没有构造方法。
3. 接口中所有的方法必须是抽象方法。
4. 接口不能包除static和final含类成员变量。
5. 接口不是被类继承而是要被类实现。
6. 接口支持多继承。

 
接口特性:
1. 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为public abstract。
2. 接口中可以含有变量,但是接口中的变量会隐式的指定为public static final变量
3. 接口中的方法是不能在接口中实现的,只能由接口的类来实现。

 
抽象类和接口的区别:
1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

接口的声明:
声明格式如下:
[可见度] interface 接口名称 [extends 其他的接口名] {
    // 声明变量
    // 抽象方法
}

Interface关键字用来声明一个接口。下面是接口声明的一个简单的例子:
/* 文件名 : NameOfInterface.java */
import java.lang.*;
//引入包

 
public interface NameOfInterface
{
   //任何类型 final, static 字段
   //抽象方法
}

接口有以下特性:
1. 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
2.接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
3.接口中的方法都是公有的。

接口的实现:
...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...
实例:
/* 文件名 : MammalInt.java */
public class MammalInt implements Animal{
 
    public void eat(){
       System.out.println("Mammal eats");
    }
  
    public void travel(){
       System.out.println("Mammal travels");
    }
  
    public int noOfLegs(){
       return 0;
    }
  
    public static void main(String args[]){
       MammalInt m = new MammalInt();
       m.eat();
       m.travel();
    }
 }

接口的继承:
接口可以继承另一个接口就和类的继承方式相似。接口的继承使用extends关键字,子接口的继承父接口的放法。
下面的Sports接口被Hockey和Football接口继承:
// 文件名: Sports.java
public interface Sports
{
   public void setHomeTeam(String name);
   public void setVisitingTeam(String name);
}
 
// 文件名: Football.java
public interface Football extends Sports
{
   public void homeTeamScored(int points);
   public void visitingTeamScored(int points);
   public void endOfQuarter(int quarter);
}
 
// 文件名: Hockey.java
public interface Hockey extends Sports
{
   public void homeGoalScored();
   public void visitingGoalScored();
   public void endOfPeriod(int period);
   public void overtimePeriod(int ot);
}

Hockey接口自己声明了四个方法,从Spotrts接口的类需要实现六个方法。
相似的,实现Football接口的类需要实现五个方法,其中两个来自与Sports接口。
 
接口的多继承:
public interface Hockey extends Sports, Event
 
标记接口:
package java.util;
public interface EventListener
{}
 

 
 
建立一个公共类:
正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。
 
向一个类添加数据类型:
这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。

本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/java/474.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休