Java中受保护的访问说明符和默认的访问说明符有什么区别?
受保护的 访问说明符是相同的封装内可见,并且还在子类中可见,而默认 为一个 包级别的访问specifier和它可以在同一个包中可见。
受保护的访问说明符
受保护的 遗嘱在同一软件包中充当公共角色,而在软件包中充当私有角色。
受保护的对象 也仅在子类对象方面充当包外部的公共对象。
受保护的 字段或方法不能用于类和接口。
在超类中声明为受保护 的字段,方法和构造函数只能由其他包中的子类访问。
同一包中的类也可以访问受保护的 字段,方法和构造函数,即使它们不是受保护 成员的类的子类也是如此。
示例
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。
该dEFAULT 将作为同一封装内公开,并作为私人的户外包。
任何类的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 岁。