Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 보호된 액세스 지정자와 기본 액세스 지정자의 차이점은 무엇입니까?

<시간/>

보호됨 액세스 지정자는 동일한 패키지 내에서 볼 수 있습니다. 하위 클래스에서도 볼 수 있음 반면 기본값 패키지 수준 액세스 지정입니다. r 및 동일한 패키지에서 볼 수 있습니다.

보호된 액세스 지정자

  • 보호됨 동일한 패키지 내에서 공개로 작동하고 패키지 외부에서 비공개로 작동합니다.
  • 보호됨 또한 하위 클래스 개체에 대해서만 패키지 외부에서 public으로 작동합니다.
  • 보호됨 필드나 메서드는 클래스 및 인터페이스에 사용할 수 없습니다.
  • 보호됨 으로 선언된 필드, 메서드 및 생성자 다른 패키지의 하위 클래스에서만 수퍼 클래스에 액세스할 수 있습니다.
  • 동일한 패키지의 클래스는 보호된 에도 액세스할 수 있습니다. 보호된 의 하위 클래스가 아닌 경우에도 필드, 메서드 및 생성자 회원 클래스.

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.


기본 액세스 지정자

  • 액세스 지정자 없이 언급된 클래스의 모든 구성원 그러면 기본값으로 간주됩니다. .
  • 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.