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();
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น