`
wf_chn
  • 浏览: 9007 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

浅谈java protected关键字

阅读更多
前提:不在同一个包下,在同一个包下就变成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的类与对象

    在Java编程语言中,类与对象是核心概念,它们构成了面向对象编程的基础。这篇博文将深入探讨这两个概念,以及它们如何...通过阅读“浅谈Java的类与对象”这篇文档,你将能更深入地了解这些核心概念,提升你的编程技能。

    浅谈Java面向对象程序设计.pdf

    "浅谈Java面向对象程序设计" Java是一种面向对象的高级编程语言,其核心思想是模拟现实生活中的求解过程。面向对象程序设计是人类思维自然化的结果,是从低级到高级的发展结果。在Java语言中,面向对象内容主要包括...

    深入浅出谈java修饰符共6页.pdf.zip

    然而,提供的压缩包文件"深入浅出谈java修饰符共6页.pdf.zip"似乎包含的是一个PDF文档,若要获取更多具体信息,需要解压并查看文档内容。在"赚钱项目"这个子文件中,可能涉及的是如何利用Java编程技能进行项目开发以...

    浅析面向对象语言C_与Java区别_王艳娟1

    3. **类定义方式**:两者类定义形式相似,但Java类定义无需结束分号,且严格遵循数据封装,没有友元函数和友元类的概念,而C++支持friend关键字,允许外部访问私有成员。 4. **访问控制符**:Java有public、...

    浅谈Java和C#在面向对象上语法的区别

    Java的访问级别从低到高依次是private、default、protected和public,而C#有private、internal、protected、protected internal和public。值得注意的是,C#的internal访问级别与Java的default类似,但作用范围基于...

    浅谈java面向对象(类,封装,this,构造方法)

    浅谈java面向对象(类,封装,this,构造方法) 面向对象编程是一种编程范式,强调使用对象和类来解决问题。 Java 是一种面向对象的编程语言,它提供了多种机制来支持面向对象编程,如类、对象、继承、多态、封装等。 ...

    浅谈Java 对于继承的初级理解

    子类通过`extends`关键字指明其父类,并可以调用父类的构造方法,如`super()`或`super(参数列表)`。 子类对父类成员的访问权限遵循以下规则: 1. 公共成员(`public`):子类可以自由访问父类的公共成员。 2. 保护...

    浅谈java的接口和C++虚类的相同和不同之处

    - C++的虚类通过使用`virtual`关键字指定虚函数,而Java的接口通过`implements`关键字来实现。 总的来说,C++的虚类更倾向于提供一部分实现,而Java的接口更注重于定义行为规范。选择使用哪一个取决于具体的设计...

    浅谈java中的访问修饰符

    在Java编程语言中,访问修饰符是用于控制类、接口、方法和变量的可访问性的关键字。它们决定了这些元素在程序中的可见性,是面向对象编程的重要组成部分。本篇文章将详细探讨Java中的四种主要访问修饰符:public、...

    浅谈Java抽象类和接口的个人理解

    3. 抽象方法必须是public或protected,否则不能被子类继承。默认为public; 4. 抽象方法中不能有实现,否则编译报错; 5. 子类继承抽象类时,必须实现抽象类中的所有抽象方法,否则该子类也要被定义为抽象类。 二、...

    浅谈java中的对象、类、与方法的重载

    主要有四种访问修饰符:`private`(私有,仅在当前类中可见)、`public`(公共,所有地方都可见)、默认(在当前包内可见)和`protected`(在当前包和子类中可见)。 对于私有成员变量,我们通常会使用getter和...

    java基础PPT

    11. **JNI与JVM原理**:浅谈Java Native Interface(JNI),用于在Java程序中调用本地(非Java)代码,以及JVM的工作原理,包括类加载、内存管理和垃圾收集。 12. **案例分析**:可能包含一些简单的编程实例,帮助...

    java中extends与implements的区别浅谈

    在Java编程语言中,`extends` 和 `implements` 关键字分别用于类的继承和接口的实现,它们是面向对象编程的重要特性。接下来我们将详细探讨这两个关键字的区别和使用场景。 1. **`extends` 关键字**: - `extends`...

Global site tag (gtag.js) - Google Analytics