package 和 访问修饰符的访问关系:
同一类 | 同一包 | 子孙类(同包) | 子孙类(不同包) | 其他包 | |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y & N 注释:① | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
①:
可以访问 继承自父类的 protected 方法
不可以访问 父类实例的 protected 方法
父类:
package com.example.package1;
public class ParentClass {
protected void protectedMethod() {
System.out.println("This is a protected method");
}
}
子类:
package com.example.package2;
import com.example.package1.ParentClass;
public class ChildClass {
void accessProtectedMethod() {
ParentClass parentObj = new ParentClass();
parentObj.protectedMethod(); // 无法访问基类实例的受保护方法
}
}
在上述示例中,`ParentClass` 是基类,`ChildClass` 是子类,它们位于不同的包中。
在 `ChildClass` 中,我们尝试创建一个基类的实例 `parentObj`,并尝试调用基类的受保护方法 `protectedMethod()`。然而,编译器会报错,提示无法访问基类实例的受保护方法。
这是因为受保护方法只能在同一个包中的子类中访问,而不能通过基类的实例来访问。子类只能直接访问从基类继承而来的受保护方法。
复习类访问控制修饰符:
外部类只能被 :public abstract default 修饰;
内部类没有该限制,而且多个修饰符之间没有顺序要求。
访问控制修饰符:public protected default private文章来源:https://www.toymoban.com/news/detail-670637.html
非访问控制修饰符: static abstract final synchronized transient volatile文章来源地址https://www.toymoban.com/news/detail-670637.html
到了这里,关于2023.8 - java - package [包]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!