探究Java中的4种访问权限--------Java的系列学习之路(14)

前言——

今天军训的第四天,早上下了小雨,摸鱼了一上午,下午练军体拳。想写的内容很多,突然不知道今晚总结什么,最终决定写个基本但是非常重要的部分。 欢迎转载,转载请注明来处。

在Java中有4种访问权限关键字,分别是public,private,protected, 默认访问权限(包访问权限)。这4个权限关键字要么修饰类,要么修饰变量和方法,而且会有一点点小差异,所以我就针对修饰类和方法的不同来展开:

目录

一.修饰类

二.修饰变量和方法。


一.修饰类

类只能被public, 包访问权限这两种修饰。

a.public类

表示这个类在任何地方都可见,就算在不同的Package中也是完全可以的。

如上,Pet类在Code_180这个包当中,而且是个public类。调用Pet类的Limit_Visible是在JavaObject这个包当中。这说明了public类对其他类都可见,无论是在同一个包还是在不同一个包中。

b.默认访问权限(包访问权限)修饰的类

包访问权限的类,顾名思义,只能对同一个包下的类可见,对不同一个包下的类是不可见的。

在这边可以看到,Dog类位于code_180这个包中,而且是默认访问权限。JavaObject包中的Limit_Visible去调用Dog类时就会出错。只要在Code_180这个包中新建一个类文件,然后把Dog类申明为public类就可以了。

二.修饰变量和方法。

前提:这边可调用,包含两种:1种是没有继承关系时,在内部通过创建其他类的引用(包含main方法里面的引用)调用;另一种,是有继承关系时,在子类内部无须创建引用地调用。如果不可调用,表示两种情况都不可以。

a.包访问权限(默认访问权限)

此时被修饰的方法和变量只能在同一个包中被显示地调用,其他包不能调用。

在这边,Pet类虽然是Public类,但是其getType()方法是默认访问权限,只能在同一个包中访问。很明显,二者不在同一个包中,所以访问会出错,修改方法就是把这个方法改为public权限。

b.public权限

被public修饰过的方法和变量,对于与该类在同一个包或者非同一个包的类都是可见的(当然了,必须要保证这个方法所在的类也是要public,这样才比较严谨)。

这边getType因为被修改成了public权限,所以在不同的包也可以访问了。

c.private权限

如果一个方法或者变量是private权限,则这个类或者方法只能在这个类的内部被访问,其他地方都 无法访问(无论是否在同一个包中,都是无法访问的)

这边可以看到,Pet类和test类都在Code_180这个包当中,而且Pet类是public类,但是由于getType()是private方法,所以在test类中也无法调用这个方法。

d.protected权限

protected权限修饰的方法,能在同一个包中被访问;对于不在同一个包中的类,如果想访问protected方法的话,那么这个类应该是该类的子类,而且是通过在子类的内部调用父类的protected方法。

这边虽然Pig类和Pet类在不同的包,但是由于Pig类是Pet类的子类,Pig类内部是可以访问Pet类的方法的。

猜你喜欢

转载自blog.csdn.net/CCSGTC/article/details/83017657