ตัวอย่าง Java เรื่อง access modifier

คลาส A อยู่ในแพ็คเกจ com.wannik คลาสนี้มีเมธอดที่มีการเข้าใช้ (access) ทุกระดับ ตั้งแต่ private ถึง public

สอนคอมฟรี

package com.wannik;

public class A {
    private void privateMethod() {
    }

    void packageMethod() {
    }

    protected void protectedMethod() {
    }

    public void publicMethod() {
    }
}

คลาส B อยู่ในแพ็คเกจ com.wannik เหมือนกับคลาส A

บรรทัดที่ 6 คอมไพล์ไม่ผ่าน คลาส B ไม่สามารถเรียก private method ของคลาส A เพราะว่า private หมายถึงเป็นของส่วนตัว ห้ามคลาสอื่นเรียกใช้

JSP สำหรับงาน E-Commerce
PHP สำหรับงาน E-Commerce

package com.wannik;

public class B {
    public static void main(String[] args) {
        A a = new A();
        a.privateMethod();
        a.packageMethod();
        a.protectedMethod();
        a.publicMethod();
    }
}

คลาส C อยู่ในแพ็คเกจ com.wannik.other บรรทัดที่ 8-10 คอมไพล์ไม่ผ่าน

บรรทัดที่ 8 คลาส C ไม่สามารถเรียก private method ของคลาส A เพราะว่า private หมายถึงเป็นของส่วนตัว ห้ามคลาสอื่นเรียกใช้

บรรทัดที่ 9, 10 คลาส C ไม่สามารถเรียก package และ protected method ของคลาส A เพราะว่าอยู่ต่างแพ็คเกจกับคลาส A

หรือถ้า C จะ extends A ก็จะเกิด error ที่เดียวกัน

package com.wannik.other;

import com.wannik.*;

public class C {
    public static void main(String[] args) {
        A a = new A();
        a.privateMethod();
        a.packageMethod();
        a.protectedMethod();
        a.publicMethod();
    }
}

คลาส D อยู่ในแพ็คเกจเดียวกับคลาส C บรรทัดที่ 7, 8 คอมไพล์ไม่ผ่าน

บรรทัดที่ 7 คลาส D ไม่สามารถเรียก private method ของคลาส A เพราะว่า private หมายถึงเป็นของส่วนตัว ห้ามคลาสอื่นเรียกใช้

บรรทัดที่ 8 คลาส D ไม่สามารถเรียก package method ของคลาส A เพราะว่าอยู่ต่างแพ็คเกจกับคลาส A

บรรทัดที่ 9 เนื่องจากคลาส D เป็นลูกของ A จึงสามารถเรียก protected method ของ A (แต่ต้องเรียกจากเมธอดที่ไม่เป็น static)

package com.wannik.other;

import com.wannik.*;

public class D extends A {
    public void go() {
        privateMethod();
        packageMethod();
        protectedMethod();
        publicMethod();
    }
}

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

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

2 thoughts on “ตัวอย่าง Java เรื่อง access modifier

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