CodeGym /Blog Java /Ngẫu nhiên /Triển khai trong Java

Triển khai trong Java

Xuất bản trong nhóm
Khi một số người nói về mô hình kế thừa Java OOP, họ thường có nghĩa là mở rộng một lớp cha với một lớp kế thừa, một lớp con. Tuy nhiên, khi bạn bắt gặp từ khóa Java implements, điều đó có nghĩa là chúng ta chuyển sang một cấp độ trừu tượng khác và bắt đầu làm việc với các Giao diện trong Java. Chúng ta sẽ nói về giao diện là gì, chúng dùng để làm gì, cách triển khai diễn ra như thế nào.

Giao diện và triển khai là gì

Bạn có thể đã nghe từ “giao diện” nhiều lần. Ví dụ, một máy tính có giao diện nhập liệu (chuột và bàn phím), nhiều chương trình có giao diện người dùng. Theo nghĩa rộng nhất, một giao diện là một liên kết giữa hai bên tương tác. Ví dụ, cùng một bàn phím hoặc điều khiển từ xa của TV. Trong lập trình và đặc biệt là trong Java, một giao diện là một hợp đồng cụ thể cho biết lớp thực hiện nó sẽ làm gì. Một giao diện chỉ xác định hành vi. Nó không nói bất cứ điều gì về đối tượng sẽ thực hiện nó. Bạn có thể khai báo một giao diện trong Java như sau:

public interface MyInterface  {

     // constants declaration 
     // methods without implementation
     // static methods
     // default methods (default)
     // private methods
}
Đây là một cú pháp của Triển khai trong Java:

public class MyClass implements MyInterface{
//implementing the methods of MyInterface 
//Other code
} 
Một giao diện mô tả hành vi mà không chỉ định nó. Ví dụ: một hành vi như "chuyển động" có thể được áp dụng cho các loại đối tượng khác nhau: xe đạp, người, ô tô, nước sông, v.v. Hành vi bơi lội có thể là hành vi của vịt, tàu hoặc cá. Những vật thể này không có điểm chung nào ngoài việc chúng có thể di chuyển hoặc bơi lội. Vâng, và chính chuyển động với bơi lội chúng rất khác nhau. Tuy nhiên, trong Java bạn có thể tạo các lớp Duck , Boat , Fish và để chúng triển khai khả năng bơi. Đây là nơi từ khóa Triển khai Java được sử dụng.

Thực hiện từ khóa Ví dụ


public interface Swimmable {
  
   void moveForward();
   void TurnRight();
   void TurnLeft();
  
}
Như bạn có thể thấy, bản thân các phương thức không được triển khai. Nhưng chúng tôi đã tuyên bố rằng các lớp thực hiện giao diện này phải có khả năng bơi theo đường thẳng, cũng như rẽ phải và rẽ trái. Hãy tạo các lớp sẽ thực hiện giao diện này.

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...");
   }
}
Tất cả các lớp triển khai giao diện Swimmable , theo hợp đồng, phải có khả năng bơi về phía trước (thực hiện phương thức moveForward() ), cũng như rẽ phải và trái. Việc thực hiện các phương pháp này là bắt buộc. Một con vịt và một con cá bơi khác nhau. Giả sử một con cá có hai phương pháp bổ sung để thực hiện khả năng bơi lên và bơi xuống của nó. Giao diện Có thể bơi không có phương pháp này. Tuy nhiên, nếu chúng ta tạo một con của lớp Cá, chẳng hạn như Tuna hoặc Salmon, thì chúng, giống như mọi "Cá", sẽ có thể bơi lên và xuống.

Nhiều giao diện trong Java

Như bạn có thể đã biết, Java không hỗ trợ đa kế thừa. Điều đó có nghĩa là một lớp chỉ có thể được kế thừa từ một lớp cha. Tuy nhiên, theo một cách nào đó, bạn vẫn có thể sử dụng “đa kế thừa” trong Java, bởi vì một lớp có thể triển khai nhiều giao diện.

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
   }
}

Ví dụ về nhiều giao diện

Hãy nhớ rằng một con vịt không chỉ biết bơi mà còn biết bay. Hãy viết giao diện chuyến bay và triển khai nó trong chú vịt của chúng ta.

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!!!");
   }

}
Và một lần nữa, điều quan trọng cần nhớ là tại sao chúng ta viết giao diện. Giả sử nếu nó được thực hiện bởi một con chim, một chiếc máy bay, một người nhảy dù và một bông bồ công anh, thì các chuyến bay của chúng sẽ hoàn toàn khác.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION