其实Java的protected修饰符,权限定义的很微妙,大致有以下几种:

(1)protected控制符用于修饰方法和成员变量;

(2)一个类的protected方法或成员变量,在包外是不能通过该类对象进行访问的,即便在该类的子类中也不可这么做;

在该类包外的子类中能访问的只是子类自己继承来的protected 方法和属性,即可以用super来访问;

(3)在包外的子类中,不能用另外一个子类的对象访问父类中的protected变量,尽管这两个子类继承自同一个父类;

(4)在包内,则可以;

(5)而对于protected的静态变量,在子类中可以直接访问,在不同包的非子类中则不可访问;

(6)对于protected的用法,其实是遵循了OOP的一个原则,方法和成员变量被继承后,其可见的范围只能扩大,不能缩小;

父类:Test.java

package test1;

public class Test {
protected String getNumber() {
return "test";
}
}

不同包的子类:ProtectedTest2.java

package test2;

import test1.Test;

public class ProtectedTest2 extends Test {

	public void test1() {
//无法访问:无法通过父类的引用来访问
Test test = new Test();
Test test1 = new ProtectedTest2();
// test1.getNumber();
// test.getNumber();
} public void test2() {
//可以访问:可以通过继承的super来访问,或直接不用super;
getNumber();
super.getNumber();
} public void test3() {
//可以访问:通过子类对象来访问;
ProtectedTest2 pTest2 = new ProtectedTest2();
pTest2.getNumber();
} public void test4() {
//无法访问:包外的子类中,不能用另一个子类的对象访问父类的protected变量,尽管这两个子类继承自同一个父类;
ProtectedTest3 pTest1 = new ProtectedTest3();
// pTest1.getNumber();
} }

不同包的子类ProtectedTest3.java

package test2;

import test1.Test;

public class ProtectedTest3 extends Test{

}

同包的子类ProtectedTest1.java

package test1;

import test2.ProtectedTest3;

public class ProtectedTest1 {

	public static void main(String[] args) {

		Test test = new Test();
test.getNumber(); //在同包中访问 和父类不在同一包的子类,可以访问;
ProtectedTest3 pt = new ProtectedTest3();
pt.getNumber(); }
}

深入理解Java的protected修饰符的更多相关文章

  1. java protected修饰符理解

    Protected类型可以在本包和子类中访问的含义.在本包中访问,顾名思义,可以在定义类的包中的任何地方申请一个包含protected修饰符的域和方法的类的对象,并通过这个对象访问被protected ...

  2. 关于Java的权限修饰符(public,private,protected,默认friendly)

    以前对访问修饰符总是模棱两可,让自己仔细解释也是经常说不很清楚.这次要彻底的搞清楚. 现在总结如下: 一.概括总结 各个访问修饰符对不同包及其子类,非子类的访问权限 Java访问权限修饰符包含四个:p ...

  3. java protected修饰符说明

    1. 简介 对protected修饰符进行阐述,结合Object类的clone方法进行说明.其中clone方法如下:protected Object Object.clone(): 关于protect ...

  4. 对于Java中权限修饰符的理解

    老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...

  5. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  6. Java中各种修饰符与访问修饰符

    Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...

  7. java访问权限修饰符

    作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...

  8. java标识符、修饰符和关键字

    一.标识符 1.概念:标识符好比人和物的姓名,java中标识符就是类.对象.方法.变量.接口和自定义数据类型等等的名字. 2.规则: (1)首位不能是数字. (2)标识符对大小写敏感. (3)不可以是 ...

  9. java 接口默认修饰符

    概论: java接口可以是public 的,也可以是friendly的,但一定是abstracted的. java接口里的方法只能是public的.abstract的. java接口里的成员变量只能是 ...

随机推荐

  1. 公告:本博客搬迁到:http://www.courtiercai.com/

    公告:       您好,本人意见本博客搬迁到:http://www.courtiercai.com/.

  2. 在JavaScript函数式编程里使用Map和Reduce方法

    所有人都谈论道workflows支持ECMAScript6里出现的令人吃惊的新特性,因此我们很容易忘掉ECMAScript5带给我们一些很棒的工具方法来支持在JavaScript里进行函数编程,这些工 ...

  3. HBase 事务和并发控制机制原理

    作为一款优秀的非内存数据库,HBase和传统数据库一样提供了事务的概念,只是HBase的事务是行级事务,可以保证行级数据的原子性.一致性.隔离性以及持久性,即通常所说的ACID特性.为了实现事务特性, ...

  4. Python爬虫实战(二)

    本来晚上是准备写贴吧爬虫的,但是在分析页面时就遇到了大麻烦!选取了某个帖子,在爬取的时候,发现正则匹配不全..很尴尬!!先来看看吧, #!/usr/bin/env python # -*- codin ...

  5. Spring注解的使用和区别:@Component、@Service、@Repository、@Controller

    Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring ...

  6. spring技术翻译开始

    从今天开始,我会坚持每天花费两个小时来翻译一本英文书(当然自己觉得绝对算得上是经典),可能我英文水平有限,但也请路过的高人予以指点. 如果有翻译的出入很大,望各位告知,本人一定更改.决定翻译的目的有两 ...

  7. 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果

    首先呢,还是一贯作风,我们先来看看众多应用中的示例:(这种效果是很常见的,可以说应用的必须品.)                搜狐客户端                               ...

  8. Android(java)学习笔记261:JNI之编写jni程序适配所有处理器型号

    1. 还是以"02_两个数相加"为例,你会发现这个jni程序只能在ARM处理器下运行,如下:  如果我们让上面的程序运行在x86模拟器上,处理平台不对应,报如下错误: 03-29 ...

  9. 使用SQL语句创建和删除约束

    原文:http://blog.csdn.net/hamber_bao/article/details/6504905 约束的目的就是确保表中的数据的完整性. 常用的约束类型如下: 主键约束:(Prim ...

  10. Senparc.Weixin.MP SDK 微信公众平台开发教程 索引

    Senparc.Weixin.MP SDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享. ...