ไม่ เราไม่สามารถประกาศคลาสระดับบนสุดเป็น ส่วนตัวหรือได้รับการคุ้มครอง . เป็นได้ทั้ง สาธารณะ หรือ ค่าเริ่มต้น ( ไม่มีการปรับเปลี่ยน). หากไม่มีตัวปรับแต่ง แสดงว่ามีการเข้าถึงเริ่มต้น
ไวยากรณ์
// 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