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

Sự khác biệt giữa các chỉ định truy cập được bảo vệ và mặc định trong Java là gì?

Được bảo vệ thông số truy cập hiển thị trong cùng một gói và cũng hiển thị trong lớp con trong khi Mặc định đặc điểm quyền truy cập cấp gói r và nó có thể hiển thị trong cùng một gói.

Công cụ chỉ định quyền truy cập được bảo vệ

  • Được bảo vệ sẽ hoạt động như công khai trong cùng một gói và hoạt động như riêng tư bên ngoài gói.
  • Được bảo vệ cũng sẽ hoạt động như công khai bên ngoài gói chỉ đối với các đối tượng của lớp con.
  • Được bảo vệ không thể sử dụng trường hoặc phương thức cho các lớp và Giao diện.
  • Các trường, phương thức và hàm tạo được khai báo là protected trong một lớp cha chỉ có thể được truy cập bởi lớp con trong các gói khác.
  • Các lớp trong cùng một gói cũng có thể truy cập được bảo vệ các trường, phương thức và hàm tạo, ngay cả khi chúng không phải là một lớp con của protected lớp học của thành viên.

Ví dụ

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

Đầu ra

Adithya is 30 years old.


Công cụ chỉ định quyền truy cập mặc định

  • Bất kỳ thành viên nào của lớp được đề cập mà không có bất kỳ mã xác định quyền truy cập nào thì nó được coi là Mặc định .
  • Đ mặc định sẽ hoạt động như công khai trong cùng một gói và hoạt động như riêng tư bên ngoài gói.
  • Mặc định thành viên của bất kỳ lớp nào có thể có sẵn cho bất kỳ thứ gì trong cùng một gói và không thể có sẵn bên ngoài gói trong bất kỳ điều kiện nào.
  • Mặc định chỉ giới hạn quyền truy cập ở cấp độ gói , ngay cả sau khi mở rộng lớp có các thành viên dữ liệu mặc định, chúng tôi không thể truy cập.

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

Đầu ra

Jai is 25 years old.