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

เราสามารถประกาศคลาสระดับบนสุดเป็นป้องกันหรือส่วนตัวใน Java ได้หรือไม่?


ไม่ เราไม่สามารถประกาศคลาสระดับบนสุดเป็น ส่วนตัวหรือได้รับการคุ้มครอง . เป็นได้ทั้ง สาธารณะ หรือ ค่าเริ่มต้น ( ไม่มีการปรับเปลี่ยน). หากไม่มีตัวปรับแต่ง แสดงว่ามีการเข้าถึงเริ่มต้น

ไวยากรณ์

// A top level class
   public class TopLevelClassTest {
      // Class body
}
  • ถ้าเป็นระดับบนสุด ถูกประกาศเป็น ส่วนตัว คอมไพเลอร์จะบ่นว่า ตัวปรับแต่งส่วนตัวไม่ได้รับอนุญาตที่นี่ ซึ่งหมายความว่า คลาสระดับบนสุดไม่สามารถเป็นแบบส่วนตัวได้ สามารถใช้กับ ป้องกัน . ได้เช่นเดียวกัน ตัวระบุการเข้าถึงด้วย
  • ได้รับการปกป้อง หมายความว่าสมาชิกสามารถเข้าถึงได้โดยคลาสใดก็ได้ในแพ็คเกจเดียวกันและโดยคลาสย่อย แม้ว่าจะอยู่ใน แพ็คเกจอื่น .
  • ระดับบนสุด ชั้นเรียนมีได้เฉพาะ สาธารณะ นามธรรม และ สุดท้าย โมดิฟายเออร์ และมันยังสามารถกำหนดโมดิฟายเออร์คลาสใด ๆ ได้เลย สิ่งนี้เรียกว่า ค่าเริ่มต้น/แพ็คเกจ การเข้าถึง
  • เราสามารถประกาศชั้นใน เป็น ส่วนตัว หรือ ป้องกัน แต่ไม่ได้รับอนุญาตใน ภายนอก ชั้นเรียน .
  • มากกว่าหนึ่ง คลาสระดับบนสุด สามารถกำหนดได้ในซอร์สไฟล์ Java แต่มี คลาสระดับบนสุดสาธารณะ ได้ไม่เกินหนึ่งคลาส ประกาศ ชื่อไฟล์ต้องตรงกับชื่อของคลาสสาธารณะ


ประกาศคลาสที่ได้รับการป้องกัน

ตัวอย่าง

protected class ProtectedClassTest {
   int i = 10;
   void show() {
      System.out.println("Declare top-level class as protected");
   }
}
public class Test {
   public static void main(String args[]) {
      ProtectedClassTest pc = new ProtectedClassTest();
      System.out.println(pc.i);
      pc.show();
      System.out.println("Main class declaration as public");
   }
}

ในตัวอย่างข้างต้น เราสามารถประกาศคลาสเป็น protected มันจะ โยนข้อผิดพลาด บอกว่า ไม่อนุญาตตัวดัดแปลงที่นี่ . ดังนั้นโค้ดด้านบนจึงไม่ทำงาน

ผลลัพธ์

modifier protected not allowed here


ประกาศคลาสเป็นส่วนตัว

ตัวอย่าง

private class PrivateClassTest {
   int x = 20;
   void show() {
      System.out.println("Declare top-level class as private");
   }
}
public class Test {
   public static void main(String args[]) {
      PrivateClassTest pc = new PrivateClassTest();
      System.out.println(pc.x);
      pc.show();
      System.out.println("Main class declaration as public");
   }
}

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

ผลลัพธ์

modifier private not allowed here