CodeGym /Java 博客 /随机的 /在 Java 中实现
John Squirrels
第 41 级
San Francisco

在 Java 中实现

已在 随机的 群组中发布
当一些人谈到继承的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