Java访问权限控制
面向对象的核心思想之一就是封装,只把有限的方法和成员公开给别人,这也是迪米特法则的内在要求,是外部调用方对方法体内的实现细节知道得尽可能少。
如何实现封装呢?
需要使用某些关键字来限制外部对类内属性和方法的随意访问,这些关键字就是访问权限控制符
Java中的访问权限包括四个等级,权限控制严格程度由低到高,如下表所示:
访问权限控制符 | 任何地方 | 包外子类 | 包内 | 类内 | 说明 |
public | YES | YES | YES | YES | 可以修饰外部类、属性、方法,表示公开的、无限制的,是访问限制最松的一级,被其修饰的类、属性和方法不仅可以被包内访问,还可以跨类、跨包访问,甚至允许跨工程访问 |
protected | NO | YES | YES | YES | 只能修饰属性和方法,表示受保护的、有限制的,被其修饰的属性和方法能被包内及包外子类访问。注意,即使并非继承关系,protected属性和方法在同一包内也是可见的 |
无 | NO | NO | YES | YES | 即无任何访问权限控制符。千万不要说成default,它并非访问权限控制符的关键字。无访问权限控制符仅对包内可见 |
private | NO | NO | NO | YES | 只能修饰属性、方法、内部类。表示“私有的”,是访问限制最严格的一级,被其修饰的属性或方法只能在该类内部访问,子类、包内均不能访问,更不允许跨包访问 |
由此可见,不同的访问权限控制符对应的可见范围不同。在定义类时,要慎重思考该类、属性、内部类的访问权限,提倡严控访问范围。过于宽泛的访问访问不利于模块间解耦及未来的代码维护。假如,在代码重构时,private方法过旧,可以直接删除,且无后顾之忧。如果删除一个public的方法,是不是要谨慎又谨慎的检查是否被调用。
在定义类时,一下互联网公司常用的访问权限控制规则如下,总的原则是推荐访问控制级别从严处理
1、如果不允许外部直接用过new创建对象,构造方法必须是private;
2、工具类不允许有public或default构造方法;
3、类非static成员变量并且与子类共享,必须是protected;
4、类非static成员变量如果仅在本类使用,必须是private;
5、类static成员变量如果仅在本类使用,必须是private;
6、若是static成员变量,必须考虑是否为final;
7、类成员方法只供类内部调用,必须是private;
8、类成员方法只对继承类公开,那么限制为protected。
Java访问权限控制相关推荐
- java权限控制是什么_论Java访问权限控制的重要性
人在什么面前最容易失去抵抗力? 欢迎工作一到八年的Java工程师朋友们加入Java高级交流:854630135 本群提供免费的学习指导 架构资料 以及免费的解答 不懂得问题都可以在本群提出来 之后还会 ...
- [THINKING IN JAVA]访问权限控制
6 访问权限控制 6.1 包:库单元 package.import.import *.import static: 修改classpath环境变量可以将自己写的类库添加至环境变量并在任何java程序中 ...
- JAVA访问权限控制[zhuan]
Java的访问权限控制修饰符,从最大权限到最小权限依次是:public.protected.包访问权限(默认,没有关键字)和private.对于类的访问权限只能是:public和包访问权限(但内部类可 ...
- java 访问权限控制
java提供四种访问权限: public > protected > 包访问权限(无关键词) > private 包:库单元 对于包访问权限,一个包内的都可以访问. 在eclipse ...
- Java访问权限控制简述
四种访问权限 Java中类与成员的访问权限共有四种,其中三种有访问权限修饰词:public,protected,private,. Public:权限最大,允许所有类访问,但其他包下的类想要访问需使用 ...
- Zookeeper基于Java 访问-权限控制的案例演示
. 给节点赋权 List<ACL> acls=new ArrayList<>(); Id id1=new Id("digest", DigestAuthen ...
- java权限控制是什么_Java访问权限控制的重要性深入讲解
前言 人在什么面前最容易失去抵抗力? 美色,算是一个,比如说西施的贡献薄就是忍辱负重.以身报国.助越灭吴:金钱,算是另外一个,我们古人常说"钱乃身外之物,生不带来死不带去",但我们 ...
- Java访问权限之 protected详解
摘要: 对于类的成员(包括成员变量和成员方法)而言,其能否被其他类所访问,取决于该成员的修饰词:而对于一个类而言,其能否被其他类所访问,也取决于该类的修饰词.在Java中,类成员访问权限修饰词 ...
- android 静态方法 构造方法,android基础-Java篇02:类和对象、构造方法、访问权限控制、重载、this关键字、static关键字...
一.类和构造方法 (类和对象在百度百科已经有详细的介绍,这里只做简单的描述以及帮助理解:百度百科:类和对象,需要注意的是,百度百科类和对象的举例中都是C++,书写格式不要和Java混淆!) 什么是类? ...
最新文章
- SharePoint 2007讨论板(Discussion Board)的答复按钮变脸
- 被替换的项目不是替换值长度的倍数_面试官,为啥HashMap的长度是2的n次方?
- Chrome浏览器扩展程序的本地备份
- MFC中访问界面控件的两种方法
- 使用JAXP对XML文档进行DOM解析
- 如何在浏览器中增加Jupyter / ipython笔记本的单元格宽度?
- 腾讯上海安全团队招聘实习生
- linux系统 打开网页,使用Linux终端浏览网页
- OpenSSL 生成CA证书及终端用户证书
- 兜兜转转,2020已过半
- javaSE之异常详解(1)
- 年度盘点:2018云栖社区15大影响力技术团队(附100+干货博文)
- python 战舰_代码战争战舰受损或沉没Python
- hdu4215 Moles
- 数码博主自用五款高性价比蓝牙耳机分享,双11不想踩雷选什么蓝牙耳机好?
- ESP32s3-EYE ESP-IDF环境搭建Ubuntu18.04 Micropython环境搭建Pycharm 物联网
- Codeforces 刷水记录
- 为南通市2017中考数学试卷画的图
- 如何打造高效的团队(五)- 文化
- oppok5和荣耀play4tpro哪个好
热门文章
- poj2446(匈牙利算法)
- 使用C++实现Socket编程图片打包传输(修改)
- poj1236(强连通分量)
- 关于命令行窗口输入pip list出错的一些解决办法
- P3797 妖梦斩木棒 线段树区间合并
- 牛客练习赛81 小Q与彼岸花 (分块+可持久化01trie)
- 阶乘分解质因数[经典题组合数学枚举质因子]
- 微指令地址的形成方式_交换那些事儿 | 基础维护篇 IPv6地址分类及配置方法
- BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】
- CF498C Array and Operations(数论 + 最大流)