java中的受保护类

java中的受保护类,java,package,protected,Java,Package,Protected,这是一个场景: 包1具有公共类机器,该机器具有受保护变量受保护的int-speed=3 我还有一个包裹, 包2,它有公共类车,它是机器类的子类,我们还有一个公共类苹果,它有主要方法 我的问题是: 为什么可以从Car类方法/构造函数内部访问speed,但不能从APPLE类中存在的主方法创建的Car类实例访问speed 我是java新手,请帮助…该类的受保护成员仅可由该类的派生类访问,无论该类从何处启动 您可以认为public/protected/private成员不仅提供了所需的封装,而且还规定了

这是一个场景:

包1具有
公共类机器
,该机器具有受保护变量
受保护的int-speed=3

我还有一个包裹, 包2,它有
公共类车
,它是机器类的子类,我们还有一个
公共类苹果
,它有主要方法

我的问题是: 为什么可以从Car类方法/构造函数内部访问speed,但不能从APPLE类中存在的主方法创建的Car类实例访问speed


我是java新手,请帮助…

该类的受保护成员仅可由该类的派生类访问,无论该类从何处启动

您可以认为public/protected/private成员不仅提供了所需的封装,而且还规定了它们可以访问的层次结构级别

公共成员我们可以访问所有人吗

受保护的成员可以由其自身及其子成员访问

私有成员只能自己访问


为了回答你的问题

为什么速度可以从车内类方法/构造函数中访问

这是因为速度被标记为protected,根据定义,受保护的成员可用于类及其子类主体,但不能从外部使用。因为汽车是机器的子类,所以速度可以从汽车内部获得

但不是从APPLE类中存在的main方法创建的Car类实例

在这里,您试图从类/子类主体外部访问speed作为公共变量,因此无法访问


请查看更多信息。

谢谢,但我们可以从像……….这样的实例访问受保护的变量。。。。。。。。。。。。。。。。。。。。。ClassB Obj=新的ClassB();对象k=3///在这里,我从类/子类主体外部访问int k作为公共变量。在这里,所有类都在同一个包中…int k是ClassB父类的受保护变量。您不能这样做。从类外部访问“k”的唯一方法是为其使用公共setter方法。