Access Modifier
Java Access Modifier
ในภาษา Java นั้นจะมีระดับการเข้าถึงของ คลาส, ตัวแปร, เมธอด และ คอนสตรัคเตอร์ ซึ่งจะมีระดับการเข้าถึงทั้งหมด 4 แบบ
Modifier | Class | Package | Subclass | World |
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
no modifier | Y | Y | N | N |
private | Y | N | N | N |
Public Access Modifier - public
class, method, constructor, interface หรืออะไรก็ตามที่สามารถประกาศโดยใช้คำว่า public
สิ่งที่ประกาศคำว่า public นั้นจะสามารถถูกเข้าถึงจาก Class อื่นๆได้ ถึงแม้ว่าจะอยู่ต่าง package และคลาสลูกยังสามารถใช้ตัวแปรของคลาสแม่ที่ได้ประกาศ public เอาไว้ได้ด้วย
- ตัวอย่างการใช้ public
public class MainClassExample { // ตัวอย่างการใช้ public กับ method main public static void main(String[] args) { } }
Protected Access Modifier - protected
ตัวแปร, เมธอด และ คอนสตรัคเตอร์ ที่ประกาศโดยใช้คำสั่ง protected ในคลาสใดคลาสหนึ่ง จะทำให้ ตัวแปร, เมธอด และ คอนสตรัคเตอร์ที่ทำการประกาศในคลาสนั้น จะสามารถถูกเข้าถึงได้เฉพาะจากคลาสลูกเท่านั้น
คำสั่ง protected นั้นไม่สามารถนำไปประกาศข้างหน้า class หรือ interface ได้ แต่สำหรับ เมธอด และตัวแปรสามารถใช้ protected ได้ ยกเว้น เมธอดและตัวแปรใน interface
- ตัวอย่างการใช้ protected
class Dog{ // คลาสแม่ที่ทำการประกาศเมธอดแบบ protected protected void run(){ System.out.println("Dog run"); } } class LittleDog extends Dog{ // คลาสลูก LittleDog สืบทอดคลาสจากคลาสแม่ที่ชื่อว่า Dog protected void run() {// ลูกสามารถ override เมธอดของคลาสแม่ได้ super.run(); } private void run2(){ super.run(); // ลูกสามารถเรียกเมธอดของคลาสแม่ได้โดยตรง } }
Default Access Modifier - การไม่ใช้ keyword ใดๆในการประกาศ Modifier (no modifier)
Default Access Modifier ก็คือการที่เราไม่กำหนดหรือไม่ประกาศ access modifier เอาไว้ข้างหน้า คลาส, ตัวแปร, เมธอด ฯลฯ ซึ่งเมื่อเราไม่ประกาศ access modifier เหล่านี้เอาไว้จะให้ คลาส, ตัวแปร, เมธอด ฯลฯ จะถูกเข้าถึงได้จากคลาสที่อยู่ภายใน package เดียวกันเท่านั้น
- ตัวอย่างการใช้ no modifier
package noModifierPackage; public class NoModifier { // ตัวอย่างการประกาศตัวแปรแบบ no modifier String noModierString = "This is no modifier String"; // ตัวอย่างการประกาศเมธอดแบบ no modifier String methodNoModifer(){ return "This is method no modifier"; } } class OtherClass{ public void callNoModifierOtherClass(){ NoModifier noModifier = new NoModifier(); noModifier.noModierString = "Call no modifier by other class";// สามารถเรียก ตัวแปรที่ไม่ได้ทำการประกาศ modifier ผ่านทางคลาสอื่นๆ ได้เลย noModifier.methodNoModifer(); // เรียก method ที่ไม่ได้ทำการประกาศ modifier เอาไว้ได้เลย } }
Private Access Modifier - private
การประกาศ access modifier เป็นแบบ private นั้นจะทำให้ เมธอด, ตัวแปร และคอนสตรัคเตอร์ นั้นสามารถถูกเรียกใช้ได้จากภายในคลาสเดียวกันเท่านั้น เรามักจะใช้ access modifier แบบ private เพื่อที่จะทำการห่อหุ้ม object (encapsulation) เพื่อที่จะทำการซ่อนข้อมูลบางอย่างเพื่อไม่ให้ภายนอกมองเห็น
- ตัวอย่างการใช้ private
public class PrivateModifierTest { private static String privateString = "This is private variable"; private static void privateMethod(){ System.out.println("This is private method"); } public static void main(String[] args){ System.out.println(privateString); privateMethod(); } }
ไม่มีความคิดเห็น:
แสดงความคิดเห็น