CodeGym /Java Blog /Toto sisi /在 Java 中實現
John Squirrels
等級 41
San Francisco

在 Java 中實現

在 Toto sisi 群組發布
當一些人談到繼承的Java OOP 範式時,他們通常指的是用一個繼承者擴展一個父類,一個子類。然而,當您遇到 Java implements 關鍵字時,這意味著我們進入了另一個抽象級別並開始使用 Java 中的接口。我們將討論接口是什麼、它們的用途以及實現是如何發生的。

什麼是接口和實現

您可能多次聽說過“接口”這個詞。例如,計算機有輸入接口(鼠標和鍵盤),許多程序都有用戶界面。從廣義上講,接口是兩個交互方之間的鏈接。例如,相同的鍵盤或電視遙控器。在編程中,尤其是在 Java 中,接口是一個特定的契約,它說明實現它的類將做什麼。接口僅定義行為。它沒有說明將實現它的對象。您可以像這樣在 Java 中聲明一個接口:

public interface MyInterface  {

     // constants declaration 
     // methods without implementation
     // static methods
     // default methods (default)
     // private methods
}
下面是Java 中 Implements 的語法:

public class MyClass implements MyInterface{
//implementing the methods of MyInterface 
//Other code
} 
接口描述行為而不指定它。例如,“運動”等行為可以應用於不同類型的對象:自行車、人、汽車、河水等。游泳的行為可以是鴨子、船或魚的行為。除了可以移動或游泳之外,這些物體沒有任何共同點。是的,游泳的運動非常不同。但是,在 Java 中,您可以創建DuckBoatFish類並讓它們實現游泳的能力。這是使用 Java Implements關鍵字的地方。

實施關鍵字示例


public interface Swimmable {
  
   void moveForward();
   void TurnRight();
   void TurnLeft();
  
}
如您所見,方法本身並未實現。但是我們聲明實現這個接口的類必須能直線游動,也能左右轉。讓我們創建將實現此接口的類。

public class Duck implements Swimmable {
//implementing the methods
   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

}

public class Fish implements Swimmable {

   public void moveForward() {
       System.out.println("I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft() {
       System.out.println("I am turning left...");
   }

   public void turnUp(){
       System.out.println("I am turning up...");
   }

   public void turnDown(){
       System.out.println("I am turning down...");
   }

   public void Stop() {
       System.out.println("I am relaxing somewhere under the water surface...");
   }
}
根據約定,所有實現Swimmable接口的類都必須能夠向前遊(實現 moveForward ()方法),以及向右和向左轉。需要實施這些方法。鴨子和魚游的方式不同。假設一條魚有兩個額外的方法來實現它向上和向下游動的能力。Swimmable 接口沒有這個。但是,如果我們創建 Fish 類的子類,例如 Tuna 或 Salmon,它們就像所有“Fish”一樣,能夠上下游動。

Java 中的多個接口

您可能已經知道,Java 不支持多重繼承。這意味著一個類只能從一個超類繼承。然而在某種程度上你仍然可以在 Java 中使用“多重繼承”,因為一個類可以實現多個接口。

To implement multiple interfaces, use the next syntax: 
interface MyFirstInterface {
   public void myMethod();
}
interface MySecondInterface {
   public void myOtherMethod();
}

// MyClass implements both MyFirstInterface and MySecondInterface
class MyClass implements MyFirstInterface, MySecondInterface {
   public void myMethod() {
      //method implementation
   }
   public void myOtherMethod() {
     //method implementation
   }
}

多接口示例

請記住,鴨子不僅會游泳,還會飛。讓我們編寫飛行接口並在我們的鴨子中實現它。

public interface Flyable {
   double startAge = 0.1;
   void fly();
}

public class Duck implements Swimmable, Flyable {

   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

   public void fly(){
       System.out.println("I am flying!!!");
   }

}
同樣,重要的是要記住我們為什麼要編寫界面。比方說,如果由鳥、飛機、跳傘者和蒲公英來實現,它們的飛行將完全不同。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION