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.