java接口权限管理在哪里_JAVA-访问权限控制

以前对于public、private、protect、default,都只是简单的知道其对应的访问权限范围,现在看了think in java中的描述,讲了这几种访问权限在什么场景下使用,觉得进一步的了解的它存在的意义和合理性。

因为在我们的日常开发中,常常会创建一些自己常用的工具类或者相应的类库,这个时候,权限控制标识符可以使我们更好的组织和维护工具类库,以及给客户端(在这里指工具类库的调用方)对工具类库的调用更加的友好,透明。

default(friendly):即默认的包访问权限

在 java 中,如果没有设定方法或者域的访问权限,那么他默认的访问范围,就是当前包,即当前包下的其他的类,都可以访问。

调用方式:通过类实例(静态方法通过类调用)调用。

public:公开的访问权限,也称接口访问权限。

对于所有的对象都可以访问,通常修复需要被外部调用的方法,即我们需要向外部暴露的接口。

调用方式:通过类实例(静态方法通过类调用)调用。

private:私有的访问权限;只有包含该对象的类,才有访问权限。

对于不想暴露给外部的的方法,那么,我们就可以使用 private,常常修饰 那些 服务于暴露的外部接口的 方法,及被那些接口调用,这样,我们就可以随意的修改这个方法中的实现,而不用担心会影响到 调用方。

调用方式:在包含类中直接调用。

protect:受保护的访问权限,又称继承访问权限

通常是父类授权给子类访问,即只有派生了父类的子类才可以访问,所以它叫继承访问权限,即必须继承,才可以访问。

调用方式:在派生类中直接调用。

java编程思想中,建议我们在类的权限控制的编写顺序如下:

1.public、2、protect、3、default、4、private

在阅读的时候,这种方式显得更合理、更容易。

注意:这个方式不是强制性的,是建议性的!!!^_^

-------------------------------------------------------------------------------------------------------------------------------

以上讲的都是类内部的权限控制,那么对于类的本身的权限控制又是怎样的呢?继续往下看。

在 Java 中,访问权限修饰词也可以修饰类。使用方法:将修饰词 置于 class 前边即可。

类的修饰符只有 public 和 包访问权限,它不可以是 private 和 protect (内部类除外)。

类的定义的限定:

1)每个 java  文件只能有一个 public class

2)public class 的名称和 java 文件的名称必须保持一致。

3)java 文件中 可以没有 public 修饰的 class,这个时候会有一个默认的权限,即包访问权限,此时文件的名称就没有限定。(这种方式降低代码的可读性和可维护性)

------------------------------------------------------------------------------------------------------------------------------

到此,权限控制的东东就讲得差不多了,那么为什么会产生这个东西呢?相信你看了上边得介绍,就会得出如下两个原因:

1)为了使 类调用方不要访问到他们不该访问得内容,对于 类调用方 而言,他们就是一种服务。

2)为了让 类库设计者可以更改 类的内部实现,而不必去担心会 影响 到 类的调用方。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 重写session_使用Shiro重写Session 自定义SESSION

引入shiro的jar包1.2.3org.apache.shiroshiro-core${shiroVersion}org.apache.shiroshiro-web${shiroVersion}org.apache.shiroshiro-ehcache${shiroVersion}org.apache.shiroshiro-spring${shiroVersion}配置shiro(web.xml)shiroFilterorg.springframework.web.filter.Delegat…

java7最后战线_我的世界最后战线2.0整合包

我的世界1.7.2最后战线The end battle line正式V2修复版是我的世界最后战线2.0整合包。游戏信息地图名字: The End Battle Line「正式版」地图分类: 其他地图类型: 存档地图版本: 后期Anvil格式(1.3)游戏介绍>>前言<<经过了半学期加整整大半个暑假的努力&#xff0…

js添加多marker 高德地图_覆盖物-参考手册-地图 JS API | 高德地图API

覆盖物覆盖物是指叠加在地图底图之上的一些常见要素&#xff0c;包括Marker类点标记。 构造函数 说明AMap.Marker( 构造一个点标记对象&#xff0c;通过MarkerOptions设置点标记对象的属性MarkerOptions 类型 说明map 要显示该marker的地图对象position 点标记在地图上显示的位…

java敏感异常是什么_java中的异常是什么?

Throwable(所有error和exception的父类:超类)Java将错误变成对象交给异常处理机制Error(仅靠程序本身无法恢复的严重错误)一般是环境的问题&#xff0c;JVM的问题&#xff0c;并非程序的问题&#xff1b;最典型的就是虚拟机中运行的程序过多&#xff0c;造成的虚拟机内存溢出&a…

java为什么不推荐使用stack_栈和队列的面试题Java实现,Stack类继承于Vector这两个类都不推荐使用...

在 thinking in java中看到过说Stack类继承于Vector&#xff0c;而这两个类都不推荐使用了&#xff0c;但是在做一到OJ题时&#xff0c;我用LinkedList来模拟栈和直接用Stack&#xff0c;发现在进行入栈出栈操作时Stack的速度竟然还快一点然而需要多线程的时候有Collections.sy…

reducebykeyandwindow java_Spark Streaming笔记整理(三):DS的transformation与output操作

[TOC]DStream的各种transformationTransformation Meaningmap(func) 对DStream中的各个元素进行func函数操作&#xff0c;然后返回一个新的DStream.flatMap(func) 与map方法类似&#xff0c;只不过各个输入项可以被输出为零个或多个输出项filter(func) 过滤出所有函数func返回值…

java mysubmail_关于MyBatis10种超好用的写法(收藏)

用来循环容器的标签forEach,查看例子foreach元素的属性主要有item&#xff0c;index&#xff0c;collection&#xff0c;open&#xff0c;separator&#xff0c;close。item&#xff1a;集合中元素迭代时的别名index&#xff1a;集合中元素迭代时的索引open&#xff1a;常用语w…

php学好要多久,零基础php自学要多久

万事开头难&#xff0c;自学编程也是一样&#xff0c;只要能入门&#xff0c;在学起来就容易多了&#xff0c;那么零基础自学编程多久才可以入门呢&#xff0c;如何才能找到自学编程的门道呢&#xff1f; (推荐学习&#xff1a;PHP视频教程)零基础自学编程也可以&#xff0c;关…

php laravel 优点,Laravel 特点有哪些?

Laravel特点&#xff1a;1、“artisan”命令行工具&#xff0c;可以自动化完成手动的工作&#xff1b;2、“migration”管理数据库和版本控制&#xff1b;3、测试功能也很强大&#xff1b;4、适合应用各种开发模式TDD、DDD和BDD&#xff1b;5、支持Composer包管理工具。Laravel…

php枚举mysql,小技巧:取得MYSQL中ENUM(枚举)列的全部可能值。-PHP教程,PHP应用...

取得mysql中enum(枚举)列的全部可能值这里其实并不需要其它的什么函数来支持&#xff0c;只需要使用mysql提供的一些sql语句就可以了。这里为了简单起见&#xff0c;以mysql的系统表user为例&#xff0c;取出select&#xff3f;priv这一列的所有可能值。方法&#xff1a;show c…

php 拼接wav,将两个Wav文件合并为一个 | 学步园

参考了&#xff1a;http://www.codeguru.com/forum/showthread.php?t132649CWave CWave::Mix(LPCTSTR bkWav){CWave wavBK(bkWav);int iTrackLenth;int iHeaderLen 46;iTrackLenth data.dataSIZE;CWave ret_val;ret_val.fmt fmt;ret_val.riff riff;ret_val.data data;ret…

php+代码行数常量,php统计文件中的代码行数

函数介绍&#xff1a;file_get_contents()把整个文件读入一个字符串中。explode() 函数使用一个字符串分割另一个字符串&#xff0c;并返回由字符串组成的数组。count() 函数返回数组中元素的数目。在线视频教程分享&#xff1a;php视频教程示例如下&#xff1a;public functio…

PhP加载时显示动画,在ajax请求完之前的loading加载的动画效果实现

这篇文章给大家介绍的内容是关于在ajax请求完之前的loading加载的动画效果实现&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。很多时候我们需要引入框架来开发项目&#xff0c;这时我们可能会遇到页面还没加载完源码出来了的…

php中 和 的优先级,理解php中的运算符优先级

您的代码正在评估如下&#xff1a;while (!($apns ($this->getApns($streamContext) && ($z < 11))))这就是你看到无限循环的原因(只要$z> 11,$apns为false,所以条件总是为真).这种优先权的原因是特殊规则仅适用于&#xff01;赋值左侧有效(优先级低于).它对…

java自定义异常实验总结,Java实验--自定义异常的使用

这几天有点小忙&#xff0c;都没时间更新博客了&#xff0c;今天趁着Java实验课&#xff0c;把做的这次实验放上去吧&#xff01;实验5 自定义异常的使用a&#xff0e;在定义一个银行类Bank时, 有存钱deposit()、取钱withdraw()、显示余额showBalance()等方法。若取钱数大于余额…

matlab 动态分配内存,[Matlab科学计算之高效编程] 1. 预分配内存

通过对变量预分配内存可以大大降低计算耗时&#xff0c;下面举例说明。1.没有预分配变量内存情况clearn 2000;tic;for i1:nfor j1:na(i,j) 1;endendtime toc;disp([未预分配内存下计算时间为,num2str(time),秒])计算时间为&#xff1a;未预分配内存下计算时间为3.3465秒2.预…

wordpressQQ登陆php代码,仅在登录时使用wordpress PHP代码

我有一个自定义URL生成的一些PHP嵌入到页面模板中.<?php echo http://www.mywebsite.co.uk/clients/ . $current_user->user_login . "/"; ?>这一切都很好,但我希望它能在用户未登录时将链接更改为静态链接,否则get_currentuserinfo部分会中断并且显示的链…

matlab 水文频率曲线,【求助】如何计算水文频率,外行求教 - 地学 - 小木虫 - 学术 科研 互动社区...

根据某水文现象的统计特性,利用现有水文资料,分析水文变量设计值与出现频率(或重现期)之间的定量关系的工作过程称为水文频率计算。自然界的现象按发生情况可分成&#xff1a;必然事件&#xff0c;即在一定条件下必然会发生的事情&#xff0c;如降雨以后就要涨水是必然发生的&a…

水解聚丙烯酰胺 php,聚丙烯酰胺水溶液的流变性质

聚 丙 烯 酰 胺 水 溶 液 的 流 变 性 质谢 刚 ! 黎 勇 陈 九 顺 邓 立 育( 黑 龙 江 大 学 化 学 化 工 学 院 哈 尔 滨 ! " # # $ # ) ( 黑 龙 江 进 出 口 商 品 检 验 局 哈 尔 滨 )关 键 词 聚 丙 烯 酰 胺 水 溶 液 &#xff0c; 流 变 性 质 &#xff0c; 粘 性 指…

matlab字符和字符串,MATLAB字符和字符串

3.字符和字符串在MATLAB中&#xff0c;几个字符(Character)可以构一个字符串(String)。一个字符串被视为一个行向量&#xff0c;而字符串中的每一个字符(含空格符)&#xff0c;则是以其ASCII的形式存放于此向量的每一个元素中&#xff0c;只是它的外显形式仍然是可读的字符。字…