Interface and Grouping Object

 

Interface

คือ การกำหนดรูปแบบคุณสมบัติที่คลาสควรจะมีเพื่อเอาไว้ถ่ายทอดต่อไป 

รูปแบบการใช้งานจะคล้ายกับการประกาศคลาส  คือ     interface < ชื่อ interface> {   }

ตัวอย่างการใช้งาน เช่น

interface Bounceable

{

          public static final sb=0;

          public abstract void bounce();

          public abstract void setBounceFactor(int bf);

}

 

การนำ interface ไปใช้เรียกว่าการ implement interface นั้น ๆ หมายถึงเติมรายละเอียดที่ interface ระบุไว้ให้ครบ เพื่อที่จะสามารถทำงานได้ตรงตามวัตถุประสงค์ของการออกแบบ interface และคลาสที่ implement interface นั้นจะได้คลาสที่เป็นคล้ายกับคลาสลูกของ interface นั้น คือได้รับสมาชิกถ่ายทอดมาจาก interface นั้นด้วย   เช่น

 

class Tire implements Bounceable

{

      //  ได้  public static final sb=0; มาด้วย

      public void bounce( )

      {

         // code for bounce method

      }

      public void setBounceFactor(int bf)

      {

         // code for setBounceFactor method

      }

}

 

interface สามารถ extends interface อีกชนิดได้ ใช้ในกรณีต้องการเพิ่มคุณสมบัติบางอย่างเข้าไปใน interface เดิม  (แต่ interface ไม่สามารถ implement interface ได้ ) ตัวอย่าง interface extends interface เช่น

 

interface Rollable

{

          roll();

}

interface Bounceable extends Rollable {  }

 

ซึ่งหากคลาสใดทำการ implements ตัว interface Bounceable ไปก็จะต้องเติมรายละเอียดของทั้ง Rollable และ Moveable ด้วย ซึ่งก็คือเมธอด bounce( ) จาก Bounceable และ roll( ) จาก Rollable นั่นเอง

คลาสหนึ่งคลาสสามารถ implement ได้หลาย interface เช่น

 

interface Stopable { stop(); }

 

public class Ball implements Bounceable , Stopable

{

      void bounce( ) {         /*insert bounce code*/   }

      void roll( )    {              /* insert roll code */      }

      void stop( ) { /* insert stop code */ }

}

 

ข้อกำหนดของ interface มีดังนี้

1. เมธอดทั้งหมดใน interface ต้องเป็น abstract method เท่านั้น ซึ่งจะระบุคำว่า abstract หรือไม่ก็ได้ หากไม่ระบุคอมไพเลอร์จะถือว่าเป็น abstract โดยอัตโนมัติ นอกจากนี้ห้ามเป็น static และ final ด้วย

2. Data member ทั้งหมดใน interface ต้องเป็น static และ final เท่านั้น ซึ่งจะระบุคำว่า static และ/หรือ finalหรือไม่ก็ได้ หากไม่ระบุคอมไพเลอร์จะถือว่าเป็น static และ final โดยอัตโนมัติ

3. สมาชิกทั้งหมดใน interface ต้องเป็น public เท่านั้น (ห้ามเป็น private , protected หรือ default) ซึ่งจะระบุคำว่า public หรือไม่ก็ได้ ถ้าไม่ระบุคอมไพเลอร์จะถือว่าเป็น public โดยอัตโนมัติ

4. สมาชิกข้อมูลใน interface ต้องระบุค่าเสมอ ไม่สามารถใช้ค่า default ได้เนื่องจากเป็น static

5. ห้ามมี constructor ใน interface

6. ห้ามมี this หรือ super ใน interface

7. สมาชิกข้อมูลใน interface ห้ามเป็น synchronized , transient หรือ volatile

8. สมาชิกเมธอดใน interface ห้ามเป็น strictfp , native หรือ synchronized

9. เนื่องจาก interface ไม่ใช่คลาสจึงไม่สามารถสร้างวัตถุของ Interface ได้

10. คลาสที่ implements interface ไปแล้ว ต้องทำการ override method ทุกอย่างใน interface นั้นให้ครบ

อ้างอิงจาก เอกสารประกอบการเรียน Modern Programming(JAVA)

กรุณา Comment สักหน่อยเถอะ จะได้ปรับปรุ่งให้ดีขึ้น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s