java第十五课
一、四大访问权限修饰符
Java 一共有 4 种权限修饰符,用来控制类、成员变量、成员方法的访问范围,权限范围由大到小依次为:public > protected > 默认(空修饰符) > private。
public(公共):权限最大,任意包、任意类都可以访问,一般对外暴露的方法、工具类都使用 public 修饰;
protected(受保护):本类、同一个包内所有类、不同包的子类可以访问;
默认权限(不写修饰符):仅本类、同一个包内的类可以访问,跨包无法调用;
private(私有):权限最小,只允许当前本类内部访问,外部类完全无法直接访问,封装思想的核心修饰符。
日常编码规范:成员变量统一用 private 私有化,再搭配 get/set 方法对外提供访问入口;工具方法多用 public,工具内部私有辅助方法使用 private。
二、final 关键字
final 可以修饰类、方法、变量,核心含义:一旦定义,不可修改。
final 修饰类:该类为最终类,不能被继承,常用在工具类上,例如 String 类就是 final 类;
final 修饰方法:该方法为最终方法,不能被子类重写,但可以正常继承调用;
final 修饰变量:变量变为常量,只能赋值唯一一次,后续不能二次修改。
修饰基本类型:数值固定不变;
修饰引用类型:对象地址不可更改,但对象内部的成员变量依旧可以修改。
三、拓展知识点
权限修饰符仅能用来修饰成员,类只允许使用 public 和默认权限,不能用 private、protected 修饰外部类;
final 常量命名规范:通常全部大写,多个单词用下划线隔开,例如MAX_VALUE。
学习中遇到的问题
对 protected 的跨包子类访问规则理解模糊,经常混淆默认权限与 protected 的边界,做题时常误判不同包子类能否调用受保护成员;
错误认为 final 修饰对象后,对象内部属性也不能修改,分不清 “地址不可变” 和 “内容不可变” 的区别;
容易混淆 final 类、final 方法的作用,误以为 final 类只是方法不能重写,忘记 final 类根本无法产生子类;
前期习惯直接把成员变量定义为 public,不理解 private 私有化封装的意义,没有养成封装编码习惯。
与 C/C++ 简单对比
C++ 拥有 public、protected、private 三种访问控制,和 Java 三者规则高度相似,但 Java 多了默认包访问权限,管控划分更细致;
C++ 没有 final 关键字,限制类继承、锁定方法需要依靠特殊语法,Java 使用 final 统一实现固化限制,语法简洁统一;
C++ 的 const 常量和 Java final 常量作用相近,但 const 不能修饰类、方法,二者适用范围不一样。

浙公网安备 33010602011771号