首页 > 其他分享 >访问权限控制

访问权限控制

时间:2023-04-14 23:45:54浏览次数:38  
标签:控制 OK 控制符 private 访问 权限 方法

  面向对象的核心思想之一就是封装,只把有限的方法和成员公开给别人,这也是迪米特法则的内在要求,使外部调用方对方法体的实现细节知道得尽可能少。如何实现封装呢?需要使用某些关键字来限制类外部对类内属性和方法的随意访问,这些关键字就是访问权限控制符。
  JAVA中的访问权限包括四个等级,权限控制严格程度由低到高,如表2-2所示。
     表2-2访问权限控制及可见范围

访问权限控制符 任何地方 包外子类 包内 类内
public OK OK OK OK
protected NO OK OK OK
NO NO NO OK
private NO NO NO OK

  · public: 可以修饰外部类、属性、方法,表示公开的、无限制的,是访问限制最松的一级,被其修饰的类、属性和方法不仅可以被包内访问,还可以跨类、跨包访问,甚至允许跨工程访问。
  · protected: 只能修饰属性和方法,表示受保护的、有限制的,被其修饰的属性和方法能被包内及包子类访问。注意,即使并非继承关系,protected属性和方法在同一个包内也是可见的。
  · 无: 即无任何访问权限控制符,如示例中的noneMethod方法,没有任何修饰符。千万不要说成default,它并非访问权限控制符的关键字,另外,在JDK8接口中引入了default默认方法的实现,更加容易混淆两者的释义。无访问权限控制符仅对包内可见。虽然无访问权限控制符还可以修饰外部类,但是定义外部类极少使用无控制符的方法,要么定义为内部类,功能内聚;要么定义公开类,即public class,包外也可以实例化。
  · private:只能修饰属性、方法、内部类。表示"私有的",是访问限制最严格的一级,被其修饰的属性或方法只能在该类内部访问,子类、包类均不能访问,更不允许跨包访问。
 由此可见,不同的访问权限控制符对应的可见范围不同。在定义类时,要慎重思考该方法、属性、内部类的访问权限,提倡严格访问范围。过于宽泛的访问范围不利于模块见解耦及未来的代码维护。试想,在进行代码重构时,private方法过旧,我们可以直接删除,且无后顾之忧。可是如果想删除一个public的方法,是不是要慎重有谨慎的检查是否被调用。变量就像自己的小孩,要尽量控制在自己的视线范围内,如果作用域太大,无限制地到处乱跑,就会担心其安危。因此,在定义类时,推荐访问控制级别从严处里:
  (1)  如果不允许外部直接通过new创建对象,构造方法必须是private。
  (2)  工具类不允许有public或default构造方法。
  (3)  类非static成员变量并且与子类共享,必须是protected。
  (4)  类非static成员变量并且仅在本类使用,必须是private。
  (5)  类staitc成员变量如果仅在本类使用,必须是private。
  (6)  若是static成员变量,必须考虑是否为final。
  (7)  类成员方法只供类内部调用,必须是private。
  (8)  类成员方法只对继承类公开,那么限制为protected。

标签:控制,OK,控制符,private,访问,权限,方法
From: https://www.cnblogs.com/ganjing/p/17320258.html

相关文章

  • 【水文】角色权限设计
    参考角色权限设计的100种解法最好的权限设计,是先区分功能权限和数据权限若依后台管理系统备注本文章未思考字段权限的实现,仅仅思考了简单的功能权限与数据权限的实现,建议具体参考上面的引用链接进行学习。表结构定义users、rules、roles、user_join_roles表实现功能权......
  • [PLC]三菱QD77MS16简易运动模块同步控制范例
    三菱QD77MS16简易运动模块同步控制范例三菱QD77MS16简易运动模块同步控制范例【详细讲解】QD77MS16是三菱新推出的一款简易型的运动控制模块。相对于普通定位模块具有控制轴数多(最多16轴),无电磁干扰(伺服光纤网络),支持同步控制,凸轮控制等优点。下面,海蓝机电将以实例来说明软件组态方......
  • m基于Simulink的自适应模糊控制器设计与仿真实现
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要模糊自适应控制器同时结合自适应控制和模糊控制,形成具有自适应的功能的控制系统。模糊自适应控制不要求控制对象具有精确的数学模型,并且还巧妙的引入了自适应律以方便实时的去学习被控对象所具有的各种动态特性,然......
  • m基于Simulink的自适应模糊控制器设计与仿真实现
    1.算法仿真效果matlab2022a仿真结果如下:                2.算法涉及理论知识概要        模糊自适应控制器同时结合自适应控制和模糊控制,形成具有自适应的功能的控制系统。模糊自适应控制不要求控制对象具有精确的数学模型,并且还巧妙......
  • Linux系统软件安装与控制软件启动关闭
    操作系统安装软件有许多方式,一般分为:下载安装包自行安装如win系统使用exe文件,msi文件等。如mac系统使用dmg文件,pkg文件等。不同的Linux系统发行版使用的安装包文件也可能不同,如CentOS使用的是.rpm文件,而Ubuntu使用的是.deb文件等。系统的应用商店内安装如win系统有Micr......
  • 运行mysql容器以及通过命令行访问数据库
    运行mysql容器下面命令将创建一个名为mysql-8.0.31的容器,并将容器中的MySQL根密码设置为root。dockerrun--namemysql-8.0.31-p3306:3306-eMYSQL_ROOT_PASSWORD=root-dmysql:8.0.31访问mysqlmysql-h127.0.0.1-P3306-u<username>-p导入sql文件创建数据......
  • 视频直播点播EasyDSS迁移至新服务器,启动正常但无法访问是什么原因?
    EasyDSS能实现视频流媒体的上传、转码、存储、录像、推拉流、直播、点播等功能,具备超低延迟、超高画质、超大并发访问量等特点,可应用在多样化的场景中,如:在线课堂、教育直播、校园活动直播、企业培训、游戏直播等。平台支持HTTP、HLS、RTMP等播出协议,并且兼容多终端,如:Windows、Andro......
  • 免费远程桌面控制软件
    自从yq三年居家办公习惯远程后,我们越来越依赖远程桌面控制软件了。因为即使现在工作中不要求远程办公,办公电脑也会随时开个远程,方便随时应对突发状况。一定程度上,远程也杜绝了过度加班的现象,工作还没完全做完也能放心走,因为在路上或回家远程一下就行。目前在市场上远程桌面控制软......
  • 项目变更控制委员会(CCB)
    项目变更控制委员会或更完整的配置控制委员会(ConfigurationControlBoard,CCB),或相关职能的类似组织,是项目的所有者权益代表,负责裁定接受哪些变更。CCB由项目所涉及的多方人员共同组成,通常包括用户和实施方的决策人员。项目变更控制委员会(ChangeControlBoard,简称CCB)。变更......
  • [Docker]容器服务是如何与cgroups协同进行资源控制的?
    Docker利用Linux的控制组(cgroups)来进行资源控制。cgroups是一种内核特性,它允许对资源(例如CPU、内存、磁盘I/O等)进行限制、分配和优先级分配。Docker利用cgroups进行资源限制时,他会通过cgroups为每个容器分配特定的资源配额。这意味着每个容器只能够使用cgroups中指......