Java 之 覆写, 重载, 隐藏, 遮蔽, 遮掩

hushuo
发布于 2021-1-12 13:59
浏览
0收藏

覆写(override) 存在于子类与父类间
一个实例方法可以覆写(override) 在其超类中可以访问到(非private)的具有相同签名的实例方法(非static), 从而使能动态分配(dynamic dispatch) ; 换句话说, VM 将基于实例的运行期类型来选择要调用的覆写方法, 覆写的好处在于子类可以根据需要, 定义特定于自己的行为.
 Java 之 覆写, 重载, 隐藏, 遮蔽, 遮掩-鸿蒙开发者社区

重载(overload) 存在于类内部
在某个类中的方法可以重载(overload)另一个方法, 只要它们具有相同的名字和不同签名.由调用所指定的重载方法是在编译期选定的.
 Java 之 覆写, 重载, 隐藏, 遮蔽, 遮掩-鸿蒙开发者社区

隐藏(hide) 存在于子类和父类间
一个属性, 静态方法或内部类可以分别隐藏(hide) 在其超类中可以访问到的具有相同名字(对方法而言就是相同的方法签名)的所有属性, 方法或者内部类. 上述成员被隐藏后, 将阻止其被继承.
方法签名: 方法名称 + 参数类型

Java 之 覆写, 重载, 隐藏, 遮蔽, 遮掩-鸿蒙开发者社区

遮蔽 (shadow) 存在于 类内部
一个变量, 方法或类 可以分别 遮蔽(shadow) 在类内部具有相同名字的变量, 方法 或类. 如果一个实体被遮蔽了, 那么就无法用简单名引用到它, 简单名将引用到遮蔽声明中的实体
 Java 之 覆写, 重载, 隐藏, 遮蔽, 遮掩-鸿蒙开发者社区

遮掩(obscure) 存在于类内部
一个变量可以遮掩具有相同名字的一个类, 只要它们都在同一个范围内:
如果这个名字被用于变量与类都许可的范围, 那么它将引用到变量上.
相似的, 一个变量或一个类型可以遮掩一个包.
遮掩是唯一一种两个名字位于不同的名字空间的名字重用形式, 这些名字空间包括: 变量, 包, 方法 或 类型.
如果一个类或一个包被遮掩了, 那么你不能通过其简单名引用到它, 除非是在这样一个上下文环境中 , 即语法只允许在其名字空间中出现一种名字.

Java 之 覆写, 重载, 隐藏, 遮蔽, 遮掩-鸿蒙开发者社区

收藏
回复
举报
回复
    相关推荐