Java中受保护的访问说明符和默认的访问说明符有什么区别?

受保护的 访问说明符是相同的封装内可见,并且还在子类中可见,而默认 为一个 包级别的访问specifie r和它可以在同一个包中可见。

受保护的访问说明符

  • 受保护的 遗嘱在同一软件包中充当公共角色,而在软件包中充当私有角色。

  • 受保护的对象 也仅在子类对象方面充当包外部的公共对象。

  • 受保护的 字段或方法不能用于类和接口。

  • 在超类中声明为受保护 的字段,方法和构造函数只能由其他包中的子类访问。

  • 同一包中的类也可以访问受保护的 字段,方法和构造函数,即使它们不是受保护 成员的类的子类也是如此。

示例

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 +" 岁。";
   }
   public static void main(String[] args) {
      System.out.println(new ProtectedTest().getInfo());
   }
}

输出结果

Adithya is 30 岁。


默认访问说明符

  • 提及的类的任何成员如果没有任何访问说明符,则将其视为Default

  • d EFAULT 将作为同一封装内公开,并作为私人的户外包。

  • 任何类的Default 成员都可用于同一软件包中的任何对象,并且在任何情况下都不能在软件包外部使用。

  • 默认限制只能访问 包级别,即使是具有类的默认数据成员,我们能不能延伸到访问之后。

示例

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 +" 岁。";
   }
   public static void main(String[] args) {
      System.out.println(new DefaultTest().getInfo());
   }
}

输出结果

Jai is 25 岁。