JAVA中的访问控制符

前言

李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。

1.什么是封装

JAVA的类中可以定义成员变量,在不做任何处理的情况下,成员变量可以让对象直接访问与修改。这可能产生一系列问题,比如NBAplayer类的"球员位置"这个成员变量被改成了守门员,从语法上分析并无错误,但是不符合实际意义。

借助封装就可以解决这一问题,封装可以将细节隐藏在类的内部,外界只通过类提供的方法来实现对成员变量的操作。比如上述提到的问题,就可以设置一个setPosition()方法,保证该变量的值必须是"控球后卫",“得分后卫”,“小前锋”,“大前锋”,"中锋"中的某一个。

具体来说,封装可以实现以下目的:

  1. 隐藏类的实现细节
  2. 对象通过方法修改成员变量,可以在方法中加入控制逻辑,防止不合理的修改
  3. 可以进行数据检查,保证对象信息的完整性
  4. 便于修改,提高代码的可维护性

实现一个良好的封装,则需要从以下两个方面考虑:

  1. 隐藏类内部的实现细节
  2. 提供良好的访问方法

2.JAVA中的访问修饰符

为了实现良好的封装,JAVA中提供了3个访问修饰符(private、protected、public)来控制访问级别,加上无访问修饰符,一共是四个访问级别,具体如下(访问修饰符都是控制类的成员或者类的访问级别,不会控制局部变量,因为局部变量只能在其作用域内被访问):

  1. private修饰符:当前类访问权限,当类中的某个成员(成员变量、方法、构造器)使用private修饰时,这个成员只能在类的内部被访问。
  2. 无访问修饰符:包访问权限,当类中的某个成员,或者一个外部类不使用任何访问修饰符修饰时,这个成员或外部类可以被同一个包下的其他类访问。
  3. protected修饰符:子类访问权限,当类中的某个成员使用protected修饰时,这个成员可以被同一个包中的其他类访问,也可以被不同包中的,这个类的子类访问。
  4. public修饰符:公共访问权限,当类中的某个成员,或者一个外部类使用public修饰时,这个成员或者外部类可以被所有类访问,无论是否在同一个包中,无论是否存在父子继承关系。

不同修饰符的访问控制级别可总结为下表:

访问控制级别privateprotectedpublic
同一个类内可以访问可以访问可以访问可以访问
同一个包内可以访问可以访问可以访问
子类可以访问可以访问
全局范围(整个project)可以访问

注意:
对于一个外部类,只能使用public或者无访问修饰符,因为外部类不在任何类的内部,也就没有同一个类内,子类这个范围,所以private、protected修饰外部类没有意义。

对于访问修饰符的使用,应遵守以下几条原则:

  1. 类中绝大多数成员变量,都应使用private修饰,除非一些static修饰的,类似全局变量的成员变量,才考虑使用public修饰。
  2. 类中的工具方法,也就是只用于辅助类的其他方法实现的方法,应使用private修饰
  3. 若某个类主要用于做其他类的父类,其中的大部分方法希望子类重写,但不想被外界调用,则应使用protected修饰
  4. 类的构造器一般使用public修饰
  5. 外部类一般使用public修饰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值