Java 中 protected 和 default 访问控制的区别为:default 可见性仅限于同包,而 protected 可见性包括同包及子类。default 无法被子类继承,而 protected 可以。default 无法被其他包访问,而 protected 可以被同包和子类访问。

protected 与 default 访问控制
问题:Java 中 protected 和 default 访问控制之间的区别是什么?
回答:
protected 和 default 访问控制是 Java 中用于限制类、方法和字段可见性的两个访问控制修饰符。它们的区别如下:
立即学习“Java免费学习笔记(深入)”;
可见性范围:
MALL的中文含义是购物中心,是区别于专卖店和百货公司的一个流行的商业模式,MALL里面是各个独立商家,自由自主的定价,各自管理自己的供销渠道和客户关系。电子商务的MALL模式其实就是对B2C业务模式做了多主体的扩展和延伸。目前具有代表性的电子商务MALL模式就是淘宝商城。比如淘宝电器城,他们的模式更像是做房地产的,阿里巴巴有着繁华的互联网商业物业,只是开了一个名字叫淘宝电器城的大市场而已,没有任
- default:仅在声明类及其同包内的子类和类中可见。
- protected:除了 default 访问范围之外,还允许访问子类(无论它们在哪个包中)。
继承:
- default:子类无法继承具有 default 访问权限的成员,除非子类和父类在同一包中。
- protected:子类总是可以继承具有 protected 访问权限的成员,无论子类和父类是否在同一包中。
访问:
- default:具有 default 访问权限的成员不能从其他包访问。
- protected:具有 protected 访问权限的成员可以在同一个包中访问,也可以从子类(无论它们在哪个包中)访问。
示例:
// default 访问权限
class Animal {
int age; // default 访问权限
}
// 另一个包中的类
class Farm {
// 无法访问 Animal 中的 age 变量,因为 Farm 和 Animal 不在同一个包中
}
// protected 访问权限
class Mammal extends Animal {
boolean hasFur; // protected 访问权限
}
// 另一个包中的类
class Elephant extends Mammal {
// 可以访问 hasFur 变量,因为 Elephant 是 Mammal 的子类
}其他要点:
- default 访问权限有时也称为“package-private”,因为它的可见性仅限于当前包。
- protected 访问权限比 default 访问权限更宽松,因为它允许子类访问。
- 对于需要在子类中访问且不应从其他包访问的成员,通常使用 protected 访问权限。










