前提:不在同一个包下,在同一个包下就变成package level的访问了,性质不一样
结论:只能访问自己继承的protected 部分,其他的包括父类的,或者其他实现了父类的派生类的,不能访问
这里再给出《java in a nutshell》中的一段话:
protected access requires a little more elaboration. Suppose class A declares a protected field x and is extended by a class B, which is defined in a different package (this last point is important). Class B inherits the protected field x, and its code can access that field in the current instance of B or in any other instances of B that the code can refer to. This does not mean, however, that the code of class B can start reading the protected fields of arbitrary instances of A! If an object is an instance of A but is not an instance of B, its fields are obviously not inherited by B, and the code of class B cannot read them.
参考:
http://zhangjunhd.blog.51cto.com/113473/19287
随便写了点示例
package pTest.pkg1;
public class SuperClass {
protected int x;
}
package pTest.pkg1;
public class SubClassA extends SuperClass {
void printX(){
System.out.println(x);
}
}
package pTest.pkg2;
import pTest.pkg1.SubClassA;
import pTest.pkg1.SuperClass;
public class SubClassB extends SuperClass {
public static void main(String[] args) {
SubClassB b = new SubClassB();
System.out.println(b.x);
SubClassA a = new SubClassA();
// System.out.println(a.x);
SuperClass s = new SuperClass();
// System.out.println(s.x);
}
}
把注释去掉,即可看到报错信息
the field SuperClass.x is not visible
分享到:
相关推荐
揽括了java中常见的关键字及用法,包括Abstract、instanceof、private、protected等等。
protected 关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。可以在声明protected 类、方法或字段的类、同一个包中的其他任何类以及任何子类(无论子类是在哪个包中声明的)中引用这些类、...
java中public、protected、默认、private关键字
1、protected 关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 2、可以在声明 protected 类、方法或字段的类、同一个包中的其他任何类以及任何子类(无论子类是在哪个包中声明的)中引用...
Java关键字是Java编程语言中预定义的保留字,用于表示特定的语言功能或概念。它们在语法上具有特殊的意义,不能用作变量名、类名或其他标识符。掌握Java关键字的作用对于编写正确的Java代码至关重要。这些关键字包括...
java中50个关键字的作用 Abstract break continue final protected ==
protected - 12 - public - 12 - return - 13 - short - 13 - static - 13 - super - 14 - switch - 14 - synchronized - 15 - this - 16 - throw - 16 - throws - 16 - transient - 17 - try - 17 - true - 18 - ...
NULL 博文链接:https://837062099.iteye.com/blog/1609340
主要介绍了Java编程中protected关键字与static关键字的作用,是Java入门学习中的基础知识,需要的朋友可以参考下
protected:受保护的,用于定义一个受保护的成员或方法。 public:公共的,用于定义一个公共的成员或方法。 return:返回,用于返回一个值。 short:短整型,用于表示一个短整数。 static:静态,用于定义一个静态...
一个C++类中的变量如果如下关键字作为修饰符. 1. public: 程序的任何...下面在看下c++ public private protected关键字 1、当在类的内部使用这三个关键字,表示访问权限: public: 可以被任意访问。 protected:
3.22 再谈Java包 56 3.23 如何实现包 56 3.24 包的调用 56 3.24.1.1 1) 在每个类名前面加上完整的包名 57 3.24.1.2 2) 通过 import 语句引入包中的类 57 3.25 类的路径 57 3.26 包的访问权限 58 3.27 源文件的声明...
复用类 组合、继承:语法、选择、使用 protected关键字 向上转型 Final关键字 初始化与类加载
//Abstract关键字必须与Virtual或Dynamic关键字同时使用, 因为抽象方法必须被覆盖式实现. //抽象类不能实例化, 抽象方法不能包含方法体. type TDemo = class private protected procedure X; virtual; abstract;...
Java类protected继承链访问控制机制研究
protected 受保护的 当前包内可用 private 私有的 当前类可用 2).定义类、接口、抽象类和实现接口、继承类的关键字、实例化对象(共6个) 关键字 意思 备注,常用 class 类 ...
本篇文章是对Java protected进行了详细的分析介绍,需要的朋友参考下
C++关键字大全(67个) asm auto bad_cast bad_typeid bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum except explicit extern false finally float ...
以上这篇浅谈php中的访问修饰符private、protected、public的作用范围就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:php中访问修饰符的知识点总结PHP...
static关键字,主要描述全局的概念,利用该属性可以定义属性和方法,但是90%情况下很少直接编写static。 现在假设定义一个只描述中国人的类,类中包含:姓名、年龄、国家,按之前的概念设计如下: protected void ...