protected的一些功能
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的一些功能的更多相关文章
- Android 中常见控件的介绍和使用
1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...
- Java基础——继承和多态
面向对象的编程允许从已经存在的类中定义新的类,这称为继承. 面向过程的范式重点在于方法的设计,而面向对象的范式将数据和方法结合在对象中.面向对象范式的软件设计着重于对象以及对象上的操作.面向对象的方法 ...
- git锁和钩子以及图形化界面
1.锁机制 Locking Options 严格锁(strict locking):一个时刻,只有一个人可以占用资源. 乐观锁(optimistic locking):允许多个人同时修改同一文件.乐观 ...
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- Xamarin. Android实现下拉刷新功能
PS:发现文章被其他网站或者博客抓取后发表为原创了,给图片加了个水印 下拉刷新功能在安卓和iOS中非常常见,一般实现这样的功能都是直接使用第三方的库,网上能找到很多这样的开源库.然而在Xamarin. ...
- ABP框架 - 功能管理
文档目录 本节内容: 简介 关于 IFeatureValueStore 功能类型 Boolean 功能 Value 功能 定义功能 基本功能属性 其它功能属性 功能层次 检查功能 使用Requires ...
- 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计
ERP系统的单据具备标准的功能,这里的单据可翻译为Bill,Document,Entry,具备相似的工具条操作界面.通过设计可复用的基类,子类只需要继承基类窗体即可完成单据功能的程序设计.先看标准的销 ...
- 解析大型.NET ERP系统 数据审计功能
数据审计,英语表达是Audit,是追踪数据变化的过程,记录数据变化前后的值,供参考分析.通过设置,ERP可以追踪一个表的所有字段的变化,也可以只记录指定的字段的值变化.欧美企业每年都有独立的审计部门, ...
- 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能
做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...
随机推荐
- oracle 10g函数大全--分析函数
oracle分析函数--SQL*PLUS环境 一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达 ...
- Datamatrix码
DataMatrix二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)於1989年发明.DataMatrix二维条码是一种 ...
- 由Qt4.x项目移植到Qt5.x需要注意的事项
The Transition from Qt 4.x to Qt 5 The transition from Qt 4.x to Qt 5 is not expected to be signific ...
- Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据
原文 Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据 第12部分:改进视图模型和示例数据 原文地址:http://channel9.msdn.com/Series/Win ...
- cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap
背景 在上一篇博客中,我们提到CMGameScene,但是CMGameScene只是个框架,实际担任游戏逻辑的是CMGameMap类,这个博文就来了解下CMGameMap 头文件 class CMGa ...
- Gartner 认可 Microsoft 为应用程序平台即服务的领导者
对于 Windows Azure 而言,2013 年是了不起的一年.客户使用量每月都创新高:4 月份 Windows Azure 基础结构服务一经正式发布即受到前所未有的青睐,成为重要的里程碑.Gar ...
- eclipse svn2.0.0插件 手动安装方法
org.tigris.subversion.javahl.ClientException: Unsupported working copy formatsvn: This client is too ...
- 如何快速方便的输出向量vector容器中不重复的内容
在vector容器中,存入的内容难免会出现重复,那么如何快速输出或提前非重复的那些数据呢,即重复的数据只输出一次,直观的方法是每次输出都要通过循环比较是否已经输出过,这种方法还是比较费时的,可以利用u ...
- 修改linux多系统启动顺序
Ubuntu和XP双系统grub2默认启动项设置为XP 装了双系统后,在开机时总会有想让一个系统默认启动的时候,一般安装完Ubuntu和XP双系统后,开机时默认的是启动Ubuntu系统,但是当想让XP ...
- FileDescriptor
FileDescriptor 在java中的java.io包下面 public final class FileDescriptor { ... } 官方的解释: 文件描述符类的实例用作与基础机器有关 ...