Java中有四种访问权限,public,private,protected和包访问权限,它们是置于类中每一个成员之前的定义,无论是一个域还是一个方法,下面一一介绍。

 一、包访问权限

  如果不提供任何访问权限修饰词,这意味着是包访问权限。即当前包中的所有其他类对那个包访问权限的成员都有访问权限,但对于这个包之外的所有类,这个类是private的,所以处于一个编译单元中的所有类之间,都是可以互相访问的。包访问权限允许将包内所有的类组合起来,以便于它们之间可以轻松地相互访问。总的来说,取得对某成员的访问去你的途径有:

  (1)将该成员设为public。

  (2)通过赋予包访问权的方式,将这几个类放在同一个包下。

  (3)使用继承来访问父类的public和protected成员。

  (4)提供访问器(accessor)和变异器(mutator)方法,也称get/set方法。

二、public:接口访问权限

  使用public关键字,就意味着public之后紧跟着的成员声明自己对每个人都是可用的。下面是一个例子:

 package dessert;

 public class cookie {
public cookie(){
System.out.println("cookie constructor");
}
void bite(){ }
}

  如果再创建一个使用这个类的程序:

 package eat;

 import dessert.cookie;

 public class dinner {
public static void main(String[] args){
cookie c = new cookie();
//c.bite();
}
}

  就会发现,可以创建出cookie对象,但是不能访问到它的bite()方法,因为bite()只提供了包访问权限,在包之外是禁止访问的。

三、private:无法访问

  关键词private的意思是,除了包含该成员的类外,其他的类都无法访问这个成员,处于同一个包内的其他类也是不能访问private成员的。下面是一个使用private的实例:

 package sundae;

 class sundae{
private sundae(){}
static sundae makeSundae(){
return new sundae();
}
} public class icecream {
public static void main(String[] args){
//sundae s = new sundae();
sundae s = sundae.makeSundae();
}
}

  这个例子告诉了我们一个private的使用场景,即阻止别人直接访问某个类的构造器来创建这个类的对象。

四、protected:继承访问权限

  关键字protected处理的是使用继承的概念,protected不仅提供包访问权限,还有其他一些有趣的特性,下面是一个例子:

 package access;

 public class cookie {
public cookie(){
System.out.println("cookie constructor");
}
void bite(){
System.out.println("bite");
}
}
 package chocolate;

 import access.cookie;

 public class chocolatechip extends cookie{
public chocolatechip(){
System.out.println("chocolatechip constructor");
}
public void chomp(){
//bite();
}
public static void main(String[] args){
chocolatechip x = new chocolatechip();
x.chomp();
}
}

  在这个例子中,类cookie中有方法bite(),这说明在从cookie继承来的类中也有方法bite(),但是bite()只是包访问权限,所以在chocolate中也无法访问到这个方法。但是如果将cookie类改成这样:

 package access;

 public class cookie {
public cookie(){
System.out.println("cookie constructor");
}
protected void bite(){
System.out.println("bite");
}
}

  protected关键字的作用就体现出来了,这个关键词的使用使得,对于继承而来的其他类,也能在其他包中使用只有包访问权限的父类的域。

Chapter6_访问权限控制_访问权限修饰词的更多相关文章

  1. 权限模块_使用权限_实现主页面的效果_显示左侧菜单&只显示有权限的菜单项

    权限模块__使用权限__实现主页面的效果 HomeAction.java public class HomeAction extends ActionSupport { public String i ...

  2. 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试

    易语言关于使用 CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试 测试模块情况: |-精易模块5.8  |-鱼刺类Http  |-libCURL +++ ...

  3. Chapter6_访问权限控制_类的访问权限

    在Java中,访问权限修饰词也可以用于确定库中的哪些类对于该库的使用者是可用的,类既不可以是private也不可以是protected的,对于类的访问权限,只有两种选择:包访问权限或者public.下 ...

  4. DRF之访问权限控制和访问频率控制(节流)

    权限控制 前言 用户验证用户权限,根据不同访问权限控制对不同内容的访问. 建议了解视图.token验证的内容. 使用流程 自定义访问权限类,继承BasePermission,重写has_permiss ...

  5. asp.net core mvc权限控制:分配权限

    前面的文章介绍了如何进行权限控制,即访问控制器或者方法的时候,要求当前用户必须具备特定的权限,但是如何在程序中进行权限的分配呢?下面就介绍下如何利用Microsoft.AspNetCore.Ident ...

  6. aop (权限控制之功能权限)

    在实际web开发过程中通常会存在功能权限的控制,不如这个角色只允许拥有查询权限,这个角色拥有CRUD权限,当然按钮权限显示控制上可以用button.tld来控制,本文就不说明. 具体控制流程就是通过登 ...

  7. Spring Cloud实战 | 第十一篇:Spring Cloud Gateway 网关实现对RESTful接口权限控制和按钮权限控制

    一. 前言 hi,大家好,这应该是农历年前的关于开源项目 的最后一篇文章了. 有来商城 是基于 Spring Cloud OAuth2 + Spring Cloud Gateway + JWT实现的统 ...

  8. Linux系统——ACL权限控制及特殊权限

    ACL权限控制 ACL(access control list),可以提供除属主.属组.其他人的rwx权限之外的细节权限设定 ACL的权限控制 (1)User 使用者 (2)Group 群组 (3)M ...

  9. JAVAEE——BOS物流项目11:在realm中授权、shiro的方法注解权限控制、shiro的标签权限控制、总结shiro的权限控制方式、权限管理

    1 学习计划 1.在realm中进行授权 2.使用shiro的方法注解方式权限控制 n 在spring文件中配置开启shiro注解支持 n 在Action方法上使用注解 3.★使用shiro的标签进行 ...

随机推荐

  1. python学习笔记---文件的操作

    数据的保存: 1.内存:常用的变量2.文件:文本内容,二进制的文件内容3.数据库: 读文件:1.要读取的文件路径一定要存在.2.打开存在的文件:open函数    参数1:文件的路径,相对的或者是绝对 ...

  2. EXCEL文本字符串转日期

    =IF(ISERROR(DATEVALUE(A2)), A2, DATEVALUE(A2)) 注意ISERROR函数的使用,如果DATEVALUE解析字符串失败,比如单元格数值本来就是日期,会发挥#V ...

  3. mongodb插入数据获取本次插入的mongodb id

    最近接了一个别人的项目做二次开发,使用php进行mongodb的数据操作时,需要插入数据后得到相应的mongodb 中的id,简单代码如下 $data = array('test' => 'aa ...

  4. Python序列化操作与反序列操作

    一.概念 序列化:转向一个字符串数据类型序列:字符串 二.需要做序列化操作的情况1.数据存储2.网络上数据传输 从数据类型到字符串的过程叫序列化从字符串到数据类型的过程叫反序列化 三.现有序列化模块1 ...

  5. SuRF: Practical Range Query Filtering with Fast Succinct Tries 阅读笔记

    SuRF(Succinct Range Filter)是一种快速而紧凑的过滤器,同时支持点查询和范围查询(包括开区间查询.闭区间查询.范围计数),可以在RocksDB中用SuRF来替换Bloom过滤器 ...

  6. [SF] Symfony 在 console 中结合 Workerman

    在web框架的console中,命令不再是直接指定入口文件,如以往 php test.php start,而是类似 php app/console do 的形式. workerman 对命令的解析是 ...

  7. Python txt文件读取写入字典的方法(json、eval)

    link:https://blog.csdn.net/li532331251/article/details/78203438 一.使用json转换方法 1.字典写入txt import json d ...

  8. springBoot 全局异常方式处理自定义异常 @RestControllerAdvice + @ExceptionHandler

    前言 本文讲解使用 @ControllerAdvice + @ExceptionHandler 进行全局的 Controller 层异常处理,可以处理大部分开发中用到的自自定义业务异常处理了,再也不用 ...

  9. 音视频处理概要 markdown

    最近要想办法把录制的音视频进行拼接. 比方说此次录制的视频有三段,通过高清直播编码器录制,录制下的标准为h.264 直接用ffmpeg简单拼接,音频会丢失,所以有了此次解决方案(有可能会繁琐,简单方案 ...

  10. 分组\聚合\F\Q查询

    一.分组和聚合查询 1.aggregate(*args,**kwargs)  聚合函数 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每一个参数都指定一个包含在字典中的 ...