Java四种访问权限的简单解释

四种权限的范围

Java四种访问权限的简单解释

1. private

表示只能在单个类中访问
如图所示,并且提示改更改为默认,默认不写就行,无关键字Java四种访问权限的简单解释

2. default(无关键字,留空即默认)

同一个包下的类都可以访问,这里t1包下面有三个类,分别是test1,test2,test3
它们三个类都属于同一个包下的类
Java四种访问权限的简单解释
Java四种访问权限的简单解释

3. protected

protected可以在不同包的子类中访问,权限更大一个级别

例如,在B包中的类b1继承了在A包中的类a1,这个类b1就叫做不同包的子类

在不同包子类中访问时,还需要将不同包中的类进行import引入才能进行继承,
因为它是另一个包中的类,所以要先引入,并且引入只能引入public类

这里引入t1包中的test2类,作为t2包中的k2类的父类,所以k2类可以成为不同包的子类
父类–t1包中的test2类
Java四种访问权限的简单解释
不同包中的子类–t2包中的k2类
Java四种访问权限的简单解释
这里不同包的子类中访问父类的数据必须用super关键字,jvm才能检测到你是在访问父类中的数据,直接访问会出错提示你改为public

4. public

若父类中全部为protected及其低级的权限,Java四种访问权限的简单解释
则这样在不同包的非子类k1中是不能够访问的,并且提示该为public
Java四种访问权限的简单解释
父类的test2的构造函数改完public后就可以访问了Java四种访问权限的简单解释

这里还要再总结一下,若自己写的程序不需要跨包访问直接默认就行了,
如果需要跨包访问,并且在另一个包中只需要用到父类来派生子类,直接用父类中已经有的数据成员还有方法,并且也不需要在派生子类中 创建父类的对象作为数据成员,用protected就足够了。但是若需要创建父类的对象作为 类中的数据成员的话就它的构造方法必须要用public了,这样才能创建父类的对象。 即protected只能访问不能新建父类的对象!

所以我们经常默认把类的构造方法权限写为public,表示我们在另一个包中需要用到另一个包中的父类,这样我们写的时候也容易创建父类的对象呀,干脆直接用最高权限,免得考虑太多麻烦