Java 中的 protected 和 default 访问说明符有什么区别?

javaobject oriented programmingprogramming

Protected 访问说明符在同一个包中可见,并且在子类中也可见,而 Default 包级访问说明符,并且在同一个包中可见。

Protected 访问说明符

  • Protected 在同一个包中充当公共,在包外充当私有。
  • Protected 仅在子类对象的情况下在包外充当公共。
  • Protected 字段或方法不能用于类和接口。
  • 超类中声明为 protected  的字段、方法和构造函数只能由其他包中的子类访问。
  • 同一包中的类也可以访问 protected  字段、方法和构造函数,即使它们不是 protected  成员类的子类。

示例

public class ProtectedTest {
   // 受保护的变量   protected int age = 30;
   protected String name = "Adithya";

   /**
    * 此方法声明为受保护。
    */
   protected String getInfo() {
      return name +" is "+ age +" years old.";
   }
   public static void main(String[] args) {
      System.out.println(new ProtectedTest().getInfo());
   }
}

输出

Adithya 30 岁。

默认访问说明符

  • 如果类中任何成员未使用任何访问说明符,则该成员将被视为默认
  • 在同一个包中,默认将充当公共成员,而在包外,则充当私有成员。
  • 任何类的默认成员都可以在同一包内的任何内容中使用,在任何情况下都不能用于包外。
  • 默认将访问限制在包级别,即使在扩展具有默认数据成员的类后,我们也无法访问。

示例

public class DefaultTest {
   // 没有访问修饰符的变量   int age = 25;
   String name = "Jai";

   /**
    * 此方法使用默认 aacees 说明符声明
    */
   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.

相关文章