java的访问限制有private、protected、public。这里只想进一步认识一下protected。

我对protected有4个疑问:

1,在相同包中,是否可以调用其它类的protected函数?

2,在不同包中,是否可以调用其它类的protected函数?

3,在子包中,父包的类能否调用子包的类的protected函数?

4,在父包中,子包的类能否调用父包的类的protected函数?

带着这4个疑问,我开始做实验,先建立一个test_protected_prj的java工程,然后在src里边建立包school0,在包school0中建立两个类LiLei和HanMeimei,如图:

在类LiLei中定义一个protected函数,如下:

package school0;

public class LiLei {
protected int getMathScore(){
return 90;
}
}

在类HanMeimei中定义一个函数访问LiLei的protected函数,让韩梅梅询问她的同学李雷的数学考了多少分,如下:

package school0;

public class HanMeimei {
public void askSchoolmate(){
LiLei lilei = new LiLei();
lilei.getMathScore();
}
}

此时发现编译器没报错,说明相同包中可以访问其它类的protected函数。

那么接下来看第二个问题:

在src目录下建立包school1,和包school0是平级的,在school1中建立一个类BadStudent,如图:

在BadStudent类中定义函数,让他询问李雷数学考了多少分,如下:

此时编译器报错了,说明BadStudent不能够访问LiLei的getMathScore函数,protected函数不能跨包被访问。

接下来,看第3个问题:

在包school1下边建立包class1,在class1中建立类XiaoDi,如图:

在XiaoDi中定义函数getMathScore,如下:

package school1.class1;

public class XiaoDi {
protected int getMathScore(){
return 0;
}
}

在BadStudent中访问XiaoDi的getMathScore函数,如图:

编译器报错,父包的类不能调用子包的类的protected函数,看来小弟也不愿意告诉坏学生分数,考得太低了,不愿意说。

接下来看第4个问题:

在BadStudent中定义函数getMathScore,如下:

package school1;

public class BadStudent {
protected int getMathScore(){
return 0;
}
}

在XiaoDi中定义函数askScore函数,如下:

编译器报错了,XiaoDi没有权限访问BadStudent的getMathScore函数。

最后总结如下:

只有在同包中的两个类,才可以互相访问protected函数。不同的包,包括父包和子包,不能访问其他类的protected函数。

protected的一些功能的更多相关文章

  1. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

  2. Java基础——继承和多态

    面向对象的编程允许从已经存在的类中定义新的类,这称为继承. 面向过程的范式重点在于方法的设计,而面向对象的范式将数据和方法结合在对象中.面向对象范式的软件设计着重于对象以及对象上的操作.面向对象的方法 ...

  3. git锁和钩子以及图形化界面

    1.锁机制 Locking Options 严格锁(strict locking):一个时刻,只有一个人可以占用资源. 乐观锁(optimistic locking):允许多个人同时修改同一文件.乐观 ...

  4. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  5. Xamarin. Android实现下拉刷新功能

    PS:发现文章被其他网站或者博客抓取后发表为原创了,给图片加了个水印 下拉刷新功能在安卓和iOS中非常常见,一般实现这样的功能都是直接使用第三方的库,网上能找到很多这样的开源库.然而在Xamarin. ...

  6. ABP框架 - 功能管理

    文档目录 本节内容: 简介 关于 IFeatureValueStore 功能类型 Boolean 功能 Value 功能 定义功能 基本功能属性 其它功能属性 功能层次 检查功能 使用Requires ...

  7. 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计

    ERP系统的单据具备标准的功能,这里的单据可翻译为Bill,Document,Entry,具备相似的工具条操作界面.通过设计可复用的基类,子类只需要继承基类窗体即可完成单据功能的程序设计.先看标准的销 ...

  8. 解析大型.NET ERP系统 数据审计功能

    数据审计,英语表达是Audit,是追踪数据变化的过程,记录数据变化前后的值,供参考分析.通过设置,ERP可以追踪一个表的所有字段的变化,也可以只记录指定的字段的值变化.欧美企业每年都有独立的审计部门, ...

  9. 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能

    做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...

随机推荐

  1. HDU p1294 Rooted Trees Problem 解题报告

    http://www.cnblogs.com/keam37/p/3639294.html keam所有 转载请注明出处 Problem Description Give you two definit ...

  2. Uva 225 Golygons

    这道题如果直接用Dfs,运气好的话是可以直接过的. 但如果要在Dfs的基础上加快速度,剪枝是必不可少的. 我的剪枝策略: 1.当前点(x,y)回到出发点至少需要 |x| +| y| 步,如果剩余的步数 ...

  3. Co-prime(容斥)

    Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  4. 高屋建瓴 cocos2d-x-3.0架构设计 Cocos2d (v.3.0) rendering pipeline roadmap(原文)

    Cocos2d (v.3.0) rendering pipeline roadmap Why (the vision) The way currently Cocos2d does rendering ...

  5. NAT简单介绍

    NAT本质就是让一群机器公用同一个IP.还有一个重要的用途是保护NAT内的主机不受外界攻击 NAT类型: 1.Full Cone:IPport不受限 Full Cone仅仅做单纯的地址转换,不正确进出 ...

  6. listview添加onItemClickListener

    MainActivity.java package com.wyl.listview04; import java.util.ArrayList; import java.util.HashMap; ...

  7. PyconChina2015丁来强Pydata Ecosystem

    pydata ecosystem基于python的数据分析生态系统 0. Agenda Data Science ecosystem Data Wrangling Data Analysis Data ...

  8. 创建.NET Core项目

    创建.NET Core项目 ? 对于.NET开发人员来说,我们已经习惯了VS这个世界上最强大的IDE,所以对他们来说,项目的创建直接利用安装到VS中相应的项目模板即可.当.NET Core跨出了Win ...

  9. 基于SOAP的xml网络交互心得

    感谢小二同学将遇到的问题分享给我们,再此给以掌声.如果看不懂下面文章的建议查找一下HTTP协议的文艺,对HTTP协议要有个概念. XML网络交互心得 目录 一.     xml解析 1.根路径下 2. ...

  10. Linux看门狗脚本 1.4

    近期项目的看门狗经历了三个版本号. 第一个版本号: 用ps -ef,假设程序挂了就启动 第二个版本号: 程序因为执行时会出现不再监听7901port,所以不能简单推断机器是不是挂了,而是推断此port ...