鍍金池/ 教程/ Java/ Java接口實(shí)現(xiàn)
Java參數(shù)傳遞
Java靜態(tài)內(nèi)部類
Java final關(guān)鍵字
http://www.yiibai.com/java_object_oriented_design/java_inheritan
Java泛型類
Java標(biāo)準(zhǔn)注解
Java接口教程
Java注解
Java枚舉類型
http://www.yiibai.com/java_object_oriented_design/java_class_ins
Java接口實(shí)現(xiàn)
Java哈希編碼
Java泛型約束
http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java注解默認(rèn)值
Java異常拋出
Java不可變對象
Java類基礎(chǔ)
Java接口繼承
Java類方法
Java訪問級別
Java對象克隆
Java初始化塊
Java可變長度參數(shù)
Java接口字段
Java對象相等比較(Equals)
Java實(shí)例和靜態(tài)方法
Java繼承方法隱藏(覆蓋)
Java面向?qū)ο笤O(shè)計(jì)
Java對象finalize()方法
Java抽象類和方法
Java Object類
Java泛型方法和構(gòu)造函數(shù)
Java枚舉體
Java接口方法
Java this關(guān)鍵字
Java注解類型的限制
Java main()方法
Java Enum類
Java注解用法
Java枚舉比較
Java注解類型
Java內(nèi)部類成員
Java繼承和構(gòu)造函數(shù)
Java類實(shí)例化
Java內(nèi)部類類型
Java對象toString()方法
Java finally塊
Java繼承教程
Java自定義異常
Java枚舉值
Java接口作為類型
Java異常類
Java方法覆蓋教程
http://www.yiibai.com/java_object_oriented_design/java_class_bas
Java枚舉方法
Java方法重載
http://www.yiibai.com/java_object_oriented_design/java_interface
Java異常用法
Java內(nèi)部類
Java類成員訪問級別
Java異常處理教程
Java注解反射
Java構(gòu)造函數(shù)(構(gòu)造器)
Java導(dǎo)入(import語句的用法)

Java接口實(shí)現(xiàn)

實(shí)現(xiàn)接口

接口指定對象必須提供的協(xié)議。類可以提供接口的抽象方法的部分實(shí)現(xiàn),并且在這種情況下,類必須將自身聲明為抽象。

實(shí)現(xiàn)接口的類使用“implements”子句來指定接口的名稱。“implements”子句由關(guān)鍵字implements,后跟逗號分隔的接口類型列表組成。

一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。實(shí)現(xiàn)接口的類聲明的一般語法如下:

<modifiers> class  <class-Name>  implements <comma-separated-list-of-interfaces>  {
    // Class body  goes  here
}

假設(shè)有一個(gè)Circle類。

public class Circle implements Shape {
   void  draw(){
      System.out.println("draw circle");
   }
}

實(shí)現(xiàn)接口的類必須重寫以實(shí)現(xiàn)接口中聲明的所有抽象方法。 否則,類必須聲明為abstract。接口的默認(rèn)方法也由實(shí)現(xiàn)類繼承。植入類可以選擇不需要重寫默認(rèn)方法。接口中的靜態(tài)方法不會(huì)被實(shí)現(xiàn)類繼承。
下面的代碼定義了兩種引用類型,一種來自Circle類,另一種來自接口類型。

Circle c = new Circle(); 
Shape shape = new Circle();

變量cCircle類型。它指的是Circle對象。第二個(gè)賦值也是有效的,因?yàn)?code>Circle類實(shí)現(xiàn)了Shape接口,而Circle類的每個(gè)對象也都是Shape類型。

實(shí)現(xiàn)接口方法

當(dāng)一個(gè)類完全實(shí)現(xiàn)了一個(gè)接口時(shí),它為所實(shí)現(xiàn)的接口的所有抽象方法提供一個(gè)實(shí)現(xiàn)。接口中的方法聲明包括方法的約束。例如,方法聲明中的throws子句是方法的約束。

import java.io.IOException;
interface Shape {
  void draw(double amount) throws IOException;
}
class Main implements Shape{

  @Override
  public void draw(double amount) {
    // TODO Auto-generated method stub
  }  
}

Main的代碼是有效的,即使它丟棄了throws子句。當(dāng)類覆蓋接口方法時(shí),允許刪除約束異常。如果使用Shape類型,必須處理IOException。

import java.io.IOException;

interface Shape {
  void draw(double amount) throws IOException;
}
class Main implements Shape{

  @Override
  public void draw(double amount) {
    // TODO Auto-generated method stub

  }
  public void anotherMethod(){
    Shape s = new Main();
    try {
      s.draw(0);
    } catch (IOException e) {
      e.printStackTrace();
    }
    draw(0); 
  }
}

實(shí)現(xiàn)多個(gè)接口

一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。類實(shí)現(xiàn)的所有接口都在類聲明中的關(guān)鍵字implements之后列出。
通過實(shí)現(xiàn)多個(gè)接口,類為所有接口中的所有抽象方法提供實(shí)現(xiàn)。

interface Adder {
  int add(int n1, int n2);
}
interface Subtractor {
  int subtract(int n1, int n2);
}
class Main implements Adder, Subtractor {
  public int add(int n1, int n2) {
    return n1 + n2;
  }
  public int subtract(int n1, int n2) {
    return n1 - n2;
  }
}

部分實(shí)現(xiàn)接口

類不必為所有方法提供實(shí)現(xiàn)。如果一個(gè)類不提供接口的完全實(shí)現(xiàn),它必須聲明為abstract。

interface Calculator {
  int add(int n1, int n2);

  int subtract(int n1, int n2);
}
abstract class Main implements Calculator{
  public int add(int n1, int n2) {
    return n1 + n2;
  }
}