Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

อะไรคือความแตกต่างระหว่างตัวระบุการเข้าถึงที่ได้รับการป้องกันและการเข้าถึงเริ่มต้นใน Java?


ได้รับการปกป้อง ตัวระบุการเข้าถึงมองเห็นได้ภายในแพ็คเกจเดียวกัน และยัง มองเห็นได้ในคลาสย่อย ในขณะที่ ค่าเริ่มต้น เป็นข้อกำหนดการเข้าถึงระดับแพ็คเกจ r และสามารถ มองเห็นได้ในแพ็คเกจเดียวกัน

ตัวระบุการเข้าถึงที่มีการป้องกัน

  • ได้รับการปกป้อง จะทำหน้าที่เป็นสาธารณะภายในแพ็คเกจเดียวกันและทำหน้าที่เป็นส่วนตัวนอกแพ็คเกจ
  • ได้รับการปกป้อง จะทำหน้าที่เป็นสาธารณะนอกแพ็คเกจเฉพาะในส่วนที่เกี่ยวกับอ็อบเจ็กต์ย่อยเท่านั้น
  • ได้รับการปกป้อง ไม่สามารถใช้ฟิลด์หรือเมธอดสำหรับคลาสและอินเทอร์เฟซได้
  • ฟิลด์ เมธอด และคอนสตรัคเตอร์ที่ประกาศเป็น มีการป้องกัน ในซูเปอร์คลาสสามารถเข้าถึงได้โดยคลาสย่อยในแพ็คเกจอื่นเท่านั้น
  • คลาสในแพ็คเกจเดียวกันยังสามารถเข้าถึง มีการป้องกัน ฟิลด์ เมธอด และคอนสตรัคเตอร์ด้วย แม้ว่าจะไม่ใช่คลาสย่อยของ ที่ได้รับการป้องกัน คลาสของสมาชิก

ตัวอย่าง

public class ProtectedTest {
   // variables that are protected
   protected int age = 30;
   protected String name = "Adithya";

   /**
    * This method is declared as protected.
    */
   protected String getInfo() {
      return name +" is "+ age +" years old.";
   }
   public static void main(String[] args) {
      System.out.println(new ProtectedTest().getInfo());
   }
}

ผลลัพธ์

Adithya is 30 years old.


ตัวระบุการเข้าถึงเริ่มต้น

  • สมาชิกของคลาสที่กล่าวถึง โดยไม่มีตัวระบุการเข้าถึง ก็ถือว่าเป็น ค่าเริ่มต้น .
  • The D เริ่มต้น จะทำหน้าที่เป็นสาธารณะภายในแพ็คเกจเดียวกันและทำหน้าที่เป็นส่วนตัวนอกแพ็คเกจ
  • ค่า ค่าเริ่มต้น สมาชิกของคลาสใดก็ได้สามารถใช้ได้กับทุกอย่างในแพ็คเกจเดียวกันและไม่สามารถใช้ได้นอกแพ็คเกจภายใต้เงื่อนไขใด ๆ
  • ค่าเริ่มต้น จำกัดการเข้าถึงเฉพาะระดับแพ็คเกจ แม้หลังจากขยายคลาสที่มีสมาชิกข้อมูลเริ่มต้น เราก็ไม่สามารถเข้าถึงได้

ตัวอย่าง

public class DefaultTest {
   // variables that have no access modifier
   int age = 25;
   String name = "Jai";

   /**
    * This method is declared with default aacees specifier
    */
   String getInfo() {
      return name +" is "+ age +" years old.";
   }
   public static void main(String[] args) {
      System.out.println(new DefaultTest().getInfo());
   }
}

ผลลัพธ์

Jai is 25 years old.