随笔——同名屏蔽
Java 同名屏蔽机制,核心是就近作用域优先。内层作用域定义与外层同名变量后,内层会优先使用自身变量,外层同名变量被临时屏蔽,并非覆盖或删除。
局部变量可屏蔽类的成员变量。方法或代码块中定义和成员变量同名的局部变量,当前作用域内直接调用变量名,只会访问局部变量。若要访问被屏蔽的成员变量,需通过 this 关键字。
子类成员变量可以隐藏父类同名成员变量,这是变量隐藏,区别于方法重写。变量不存在重写,只有方法可以重写。父类引用指向子类对象时,访问的是父类的成员变量,而非子类隐藏后的变量。
核心特点:屏蔽仅针对变量名,与数据类型无关;外层变量始终存在,只是被遮挡;变量隐藏看引用类型,方法重写看实例对象。
开发中应尽量避免同名变量,代码可读性更低,极易产生逻辑 bug。
浙公网安备 33010602011771号