Computer >> Máy Tính >  >> Lập trình >> Java

Chúng ta có thể khai báo một lớp cấp cao nhất là lớp được bảo vệ hoặc riêng tư trong Java không?

Không , chúng tôi không thể khai báo một lớp cấp cao nhất là riêng tư hoặc được bảo vệ . Nó có thể là công khai hoặc mặc định ( không có bổ ngữ ). Nếu nó không có công cụ sửa đổi, nó phải có quyền truy cập mặc định.

Cú pháp

// A top level class
   public class TopLevelClassTest {
      // Class body
}
  • Nếu một lớp cấp cao nhất được khai báo là riêng tư trình biên dịch sẽ phàn nàn rằng công cụ sửa đổi riêng tư không được phép ở đây. Điều này có nghĩa là lớp cấp cao nhất không thể là lớp riêng tư , điều tương tự cũng có thể được áp dụng cho được bảo vệ cũng có thể xác định quyền truy cập.
  • Được bảo vệ có nghĩa là thành viên có thể được truy cập bởi bất kỳ lớp nào trong cùng một gói và bởi các lớp con ngay cả khi chúng ở trong một gói khác .
  • Cấp cao nhất các lớp chỉ có thể có công khai, trừu tượng cuối cùng các bổ ngữ, và cũng có thể hoàn toàn không xác định bất kỳ bổ ngữ lớp nào. Đây được gọi là mặc định / gói khả năng tiếp cận.
  • Chúng tôi có thể khai báo các lớp bên trong riêng tư hoặc được bảo vệ , nhưng nó không được phép ở bên ngoài lớp học .
  • Nhiều hơn một lớp cấp cao nhất có thể được xác định trong tệp nguồn Java, nhưng có thể có nhiều nhất một lớp cấp cao nhất công khai tuyên ngôn. Tên tệp phải khớp với tên của lớp công khai.


Khai báo lớp là Được bảo vệ

Ví dụ

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

Trong ví dụ trên, chúng ta có thể khai báo lớp là protected , nó sẽ tạo ra lỗi nói rằng công cụ sửa đổi được bảo vệ không được phép ở đây . Vì vậy, đoạn mã trên không thực thi.

Đầu ra

modifier protected not allowed here


Khai báo lớp là Riêng tư

Ví dụ

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

Trong ví dụ trên, chúng ta có thể khai báo lớp là private , nó sẽ tạo ra lỗi nói rằng công cụ sửa đổi riêng tư không được phép ở đây . Vì vậy, đoạn mã trên không thực thi.

Đầu ra

modifier private not allowed here