วันพฤหัสบดีที่ 5 กุมภาพันธ์ พ.ศ. 2558

Access Modifier

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();
 }
}


ไม่มีความคิดเห็น:

แสดงความคิดเห็น