type
status
date
slug
summary
tags
category
icon
password
example-row
example-row
java
中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。java
支持 4 种不同的访问权限。修饰符 | 当前类 | 同一包内 | 子孙类 | 其他包 |
public | Y | Y | Y | Y |
protected | Y | Y | Y | N |
default | Y | Y | N | N |
private | Y | N | N | N |
private
被声明为
private
的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为private
。声明为私有访问类型的变量只能通过类中公共的
getter
方法被外部类访问。private
访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。请注意以下方法继承的规则:
场景举例
假设
p1
p2
是包,ABC
三个类在p1
EFG
三个类在p2
, Parent
是p1
包中的类,ABEF
分别是Parent
的子类,CG
不是Parent
的子类,
Parent
中有friendly
方法f
protected
方法p
。- 场景:在与父类同包的类中调用在父类中定义的方法
例子: 在
ABC
中对Parent
、ABEF
的类进行实例化,然后调用f
和p
方法:结果:以上方法的
p
方法都能被调用,而EF
中的f
方法不能被调用,因为涉及了跨包。- 场景:在与父类不同包,但继承了父类的类中调用父类中定义的方法。
例子: 在
E
中对Parent
、ABEF
的类进行实例化,然后调用f
和p
方法结果: 以上方法中只有对
E
(自己)的实例化对象能调用p
方法,其他都不能调用,包括Patent
实例化的对象。另外,在E
中可以通过super.p
去调用。- 场景:在不同包,且不继承的类中调用方法
例子: 在
G
中实例化后调用。结果: 什么方法都不能被调用。
参考:
- 作者:黄x黄
- 链接:https://hxhowl.site/article/javanote007-access-control
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章