interface และ implements

การประกาศ interface แบบนี้

public interface A {
    int MAX = 100;
    void foo();
}

เหมือนกับการประกาศแบบนี้

public interface A {
    public static final int MAX = 100;
    public abstract void foo();
}

แต่เนื่องจากแบบแรกเขียนสั้นกว่า เราจึงนิยมเขียนแบบแรก แต่ความหมายต้องดูตามการประกาศแบบยาว เช่น int MAX ไม่ใช่ตัวแปรชื่อ MAX แต่เป็นตัวคงที่ (final) และเป็นตัวคงที่ของคลาส (static) และใครๆก็เข้าใช้ได้ (public)
คลาสที่ implements อินเทอร์เฟซ ต้องเขียนเมธอดที่ประกาศไว้ในอินเทอร์เฟซให้ครบทุกเมธอด บรรทัดที่ 5 จึงมี error

interface A {
    void go();
}

public class B implements A {

}

โปรแกรมต่อไปนี้ก็มี error

interface A {
    void go();
}

public class B implements A {
    void go() {
        
    }
}

ถึงแม้โปรแกรมข้างต้นจะมีเมธอด go() แต่เมธอดดังกล่าวต้องเป็น public โปรแกรมจึงจะคอมไพล์ผ่าน

โค้ดต่อไปนี้คอมไพล์ผ่าน ถึงแม้คลาส B จะไม่เขียนเมธอด go() ก็ตาม เพราะคลาส B เป็น abstract class

interface A {
    void go();
}

public abstract class B implements A {

}

คลาสที่สืบทอดจากคลาส B ต้องเขียนเมธอด go() (ยกเว้นว่าคลาสนั้นเป็น abstract class เหมือนกับคลาส B)

เขียนโปรแกรม Java เบื้องต้น

หนังสือ Java Keywords

หากจะนำข้อความไปใช้ ต้องแสดงที่มา และห้ามใช้ในเชิงพาณิชย์

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s