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 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。请注意以下方法继承的规则:
场景举例
假设
p1p2是包,ABC三个类在p1EFG三个类在p2, Parent是p1包中的类,ABEF分别是Parent的子类,CG不是Parent的子类,
Parent中有friendly方法fprotected方法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 许可协议,转载请注明出处。
相关文章