CodeGym /จาวาบล็อก /สุ่ม /ใช้งานใน Java
John Squirrels
ระดับ
San Francisco

ใช้งานใน Java

เผยแพร่ในกลุ่ม
เมื่อบางคนพูดถึงกระบวนทัศน์ของการสืบทอด Java OOP พวกเขามักจะหมายถึงการขยายคลาสพาเรนต์ด้วยตัวสืบทอด ซึ่งเป็นคลาสลูก อย่างไรก็ตาม เมื่อคุณเจอคีย์เวิร์ด Java Implement หมายความว่าเราก้าวไปสู่อีกระดับหนึ่งของสิ่งที่เป็นนามธรรมและเริ่มทำงานกับส่วนต่อประสานใน Java เราจะพูดถึงว่าอินเทอร์เฟซคืออะไร มีไว้เพื่ออะไร นำไปใช้อย่างไร

อินเทอร์เฟซและการใช้งานคืออะไร

คุณคงเคยได้ยินคำว่า "อินเทอร์เฟซ" มาหลายครั้งแล้ว ตัวอย่างเช่น คอมพิวเตอร์มีส่วนต่อประสานอินพุต (เมาส์และคีย์บอร์ด) หลายโปรแกรมมีส่วนต่อประสานกับผู้ใช้ ในความหมายกว้างที่สุด อินเทอร์เฟซคือการเชื่อมโยงระหว่างสองฝ่ายที่มีปฏิสัมพันธ์ ตัวอย่างเช่น แป้นพิมพ์เดียวกันหรือรีโมทคอนโทรลของทีวี ในการเขียนโปรแกรมและโดยเฉพาะอย่างยิ่งใน Java อินเทอร์เฟซคือสัญญาเฉพาะที่ระบุว่าคลาสที่นำไปใช้ทำอะไร อินเทอร์เฟซกำหนดพฤติกรรมเท่านั้น ไม่ได้พูดอะไรเกี่ยวกับวัตถุที่จะนำไปใช้ คุณสามารถประกาศอินเทอร์เฟซใน Java ได้ดังนี้:

public interface MyInterface  {

     // constants declaration 
     // methods without implementation
     // static methods
     // default methods (default)
     // private methods
}
นี่คือไวยากรณ์ของการนำไปใช้ใน Java:

public class MyClass implements MyInterface{
//implementing the methods of MyInterface 
//Other code
} 
อินเทอร์เฟซอธิบายลักษณะการทำงานโดยไม่ต้องระบุ ตัวอย่างเช่น พฤติกรรมเช่น "การเคลื่อนไหว" สามารถใช้ได้กับวัตถุประเภทต่างๆ: จักรยาน คน รถยนต์ น้ำในแม่น้ำ และอื่นๆ พฤติกรรมการว่ายน้ำอาจเป็นพฤติกรรมของเป็ด เรือ หรือปลา วัตถุเหล่านี้ไม่มีอะไรเหมือนกันนอกจากมันสามารถเคลื่อนที่หรือว่ายน้ำได้ ใช่และการเคลื่อนไหวกับการว่ายน้ำนั้นแตกต่างกันมาก อย่างไรก็ตาม ใน Java คุณสามารถสร้าง คลาส Duck , Boat , Fishและให้พวกเขาใช้ความสามารถในการว่ายน้ำได้ นี่คือที่ที่ ใช้คีย์เวิร์ด 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() ) ตลอดจนเลี้ยวขวาและซ้าย จำเป็นต้องมีการดำเนินการตามวิธีการเหล่านี้ เป็ดกับปลาว่ายไม่เหมือนกัน สมมติว่าปลามีวิธีการเพิ่มเติมสองวิธีที่ใช้ความสามารถในการว่ายขึ้นและลง อินเทอร์เฟซที่ว่ายน้ำได้ไม่มีสิ่งนี้ อย่างไรก็ตาม หากเราสร้างลูกของคลาสปลา เช่น ทูน่าหรือแซลมอน พวกเขาก็จะเหมือนกับ "ปลา" ทุกตัวที่สามารถว่ายน้ำขึ้นและลงได้

หลายอินเทอร์เฟซใน 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