Chapter6_访问权限控制_访问权限修饰词
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_访问权限控制_访问权限修饰词的更多相关文章
- 权限模块_使用权限_实现主页面的效果_显示左侧菜单&只显示有权限的菜单项
权限模块__使用权限__实现主页面的效果 HomeAction.java public class HomeAction extends ActionSupport { public String i ...
- 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试
易语言关于使用 CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试 测试模块情况: |-精易模块5.8 |-鱼刺类Http |-libCURL +++ ...
- Chapter6_访问权限控制_类的访问权限
在Java中,访问权限修饰词也可以用于确定库中的哪些类对于该库的使用者是可用的,类既不可以是private也不可以是protected的,对于类的访问权限,只有两种选择:包访问权限或者public.下 ...
- DRF之访问权限控制和访问频率控制(节流)
权限控制 前言 用户验证用户权限,根据不同访问权限控制对不同内容的访问. 建议了解视图.token验证的内容. 使用流程 自定义访问权限类,继承BasePermission,重写has_permiss ...
- asp.net core mvc权限控制:分配权限
前面的文章介绍了如何进行权限控制,即访问控制器或者方法的时候,要求当前用户必须具备特定的权限,但是如何在程序中进行权限的分配呢?下面就介绍下如何利用Microsoft.AspNetCore.Ident ...
- aop (权限控制之功能权限)
在实际web开发过程中通常会存在功能权限的控制,不如这个角色只允许拥有查询权限,这个角色拥有CRUD权限,当然按钮权限显示控制上可以用button.tld来控制,本文就不说明. 具体控制流程就是通过登 ...
- Spring Cloud实战 | 第十一篇:Spring Cloud Gateway 网关实现对RESTful接口权限控制和按钮权限控制
一. 前言 hi,大家好,这应该是农历年前的关于开源项目 的最后一篇文章了. 有来商城 是基于 Spring Cloud OAuth2 + Spring Cloud Gateway + JWT实现的统 ...
- Linux系统——ACL权限控制及特殊权限
ACL权限控制 ACL(access control list),可以提供除属主.属组.其他人的rwx权限之外的细节权限设定 ACL的权限控制 (1)User 使用者 (2)Group 群组 (3)M ...
- JAVAEE——BOS物流项目11:在realm中授权、shiro的方法注解权限控制、shiro的标签权限控制、总结shiro的权限控制方式、权限管理
1 学习计划 1.在realm中进行授权 2.使用shiro的方法注解方式权限控制 n 在spring文件中配置开启shiro注解支持 n 在Action方法上使用注解 3.★使用shiro的标签进行 ...
随机推荐
- 关于c# Debug和Release的区别 (转)
关于Debug和Release的区别之讨论本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错2. 怎样“调试” Release ...
- ArcGIS API for JS 测量线长(各折线段)
这里测量长度主要分为两个方面,一个是在绘制长折线段时,不仅需要显示总线段的长度,还要在各线段的中间显示各折线段的长度:另一个则是在绘制多边形时,不仅需要显示多边形的面积,还需要在各边的中间显示线段长. ...
- Linux 总线、设备、驱动模型 与 设备树
1.总线.设备.驱动模型 本着高内聚.低耦合的原则,Linux 把设备驱动模型分为了总线.设备和驱动三个实体,这三个实体在内核里的职责分别如下: 设备和驱动向总线进行注册,总线负责把设备和对应的驱动绑 ...
- FICO-初级会计学
初级会计学 https://wenku.baidu.com/view/39257b1a59eef8c75fbfb348.html?from=search https://wenku.baidu.com ...
- 循环队列搜索 Search in Rotated Sorted Array
这里比较重要的是,不要一上来就判断mid 和 target有没有关系.因为数组是无序的,这样的判断毫无结论,只会搞的更复杂.应该先想办法判断出哪一侧是有序的. class Solution { pub ...
- 转 JVM找出占用CPU最高的线程
这两天客户这边有一台服务器一到下午3点左右就开始卡住,页面无法访问,服务器CPU占用达到300%多开始以为只是可能只是意外事件,重启一下就好,但是发现重启之后没几分钟服务器马上又反应无法访问,我就开始 ...
- 把一个syn报文给rst掉
下面展示一个极其简单的例子,看如何使用netfilter来将一个指定端口的syn报文给rst掉. //************************************************* ...
- [Go] 开始试探一门新语言的五点思考 - Golang
1.如果在其他语言环境中写的代码很烂,那么换一门语言很可能情况更糟,因为是涉及到基本功.工程能力和心思逻辑. 2.一定要了解语言解决的问题(比如:多核并发机制性能高.省机器.简洁易学.资料少),优势是 ...
- UE4C++定义属性修饰符总结
1.BlueprintAssignable 暴露该属性来在蓝图中进行赋值,用于绑定多播委托 2.BlueprintCallable 用于从蓝图中调用C++原生函数 3.BlueprintReadO ...
- 使用MagickNet编辑图片
ImageMagick是一个免费的创建.编辑.合成图片的软件.它可以读取.转换.写入多种格式的图片.图片切割.颜色替换.各种效果的应用,图片的旋转.组合,文本,直线,多边形,椭圆,曲线 ...