JAVA的四种访问修饰符
Posted Melody~M
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA的四种访问修饰符相关的知识,希望对你有一定的参考价值。
JAVA中的访问修饰符,主要用于设置类、属性、方法的访问级别,有以下四种:
修饰符 | 同一个类 | 同一个包 | 子类 | 任何地方 |
public(公共的) | Y | Y | Y | Y |
protected(受保护的) | Y | Y | Y | |
default(默认的) | Y | Y | ||
private(私有的) | Y |
1、public修饰符:
public修饰符表示公开的,公共的。不同类、不同包下都可以访问
1个java文件中只可以有一个public修饰的类,并且类名需要和文件名相同
2、protected修饰符
protected修饰符表示受保护的,它主要的作用是保护子类,子类可以用它修饰的成员,其他的不可以
protected修饰符可以被本类、同一个包中的类、不同包中的子类所访问到
protected可以修饰属性、方法,但是不能修饰外部类,可以修饰内部类
3、default修饰符
当定义变量、方法以及类时,没有写访问修饰符,则代表默认的修饰符default
default修饰的属性、方法、类,只能被本类或者同一个包中的其他类访问到,针对本包访问而设计,任何处于本包下的属性、方法、类、接口等,都可以相互访问
注:在接口中,默认的访问修饰符是public
4、private修饰符:
可用来修饰内部类、属性、方法
“私有的”,即被private修饰的属性、方法、类只能被该类的对象访问,其子类不能访问,更不能允许跨包访问
注意:private可以修饰内部类,不可以修饰外部类
实例解析:
首先创建两个包:testPackage1、testPackage2,包下分别创建两个类
Person类中有不同修饰符修饰的属性和方法
Person类内部可以访问Person对象的所有属性和方法
同包的子类c2可以访问Person对象的public、protected、default修饰的属性和方法,无法访问private修饰的内容
同包的子类c2可以访问c2对象的public、protected、default修饰的属性和方法,无法访问private修饰的内容
同一个包下的School类,可以访问Person对象中public、protected、default修饰的属性和方法,无法访问private修饰的内容
不同包的类Person1,只可以访问Person对象Public修饰的内容
不同包的子类School1,只可以访问Person对象Public修饰的内容
不同包的子类School1,可以访问School1对象Public、protected修饰的内容(即从父类Public继承到的内容)
总结:
person对象在不同类中可以访问到的权限如下
权限 | person对象在person类中 访问person类的属性方法 | person对象在本包的其他类中 访问person类的属性方法 | person对象在其他包的类中 访问person的属性和方法 |
public | 是 | 是 | 是 |
protected | 是 | 是 | 否 |
default | 是 | 是 | 否 |
private | 是 | 否 | 否 |
person类的子类在不同包中可以继承到的属性和方法
权限 | 同包子类 | 不同包子类 |
public | 是 | 是 |
protected | 是 | 是 |
default | 是 | 否 |
private | 否 | 否 |
java的四种修饰符访问权限
java的访问修饰符有四种:private、protected、public、default.
这四种访问修饰符的访问权限不一样。
1.private:及私有的,对访问权限限制最窄的修饰符。被private修饰的属性以及方法只能被该类的对象访问。它的子类也不可以访问,更不支持跨包访问。
2.protected:及保护访问权限,是介于public和private之间的一种访问修饰。被protected修饰的属性及方法只能被类本身的方法和子类访问。(子类在不同的包中也可以访问)
3.public:及共有的,是访问权限限制最宽的修饰符。被public修饰的类、属性、及方法不仅可以跨类访问,而且可以跨包访问。
4.default:及默认的,不加任何访问修饰符。常被叫做“默认访问权限”或者“包访问权限”。无任修饰符时,只支持在同一个包中进行访问。
以上是关于JAVA的四种访问修饰符的主要内容,如果未能解决你的问题,请参考以下文章