Java中public,private,protected,和默认的区别
2、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。
3、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限;
4、public修饰词,表示成员是公开的,所有其他类都可以访问;
作用域 当前类 同包 子类 其他
public √ √ √ √
protected √ √ √ ×
默认 √ √ × ×
private √ × × ×
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。
Java中访问修饰符public、private、protecte、default的意义讲解:
public(接口访问权限): Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
private(你无法访问): Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protected(继承访问权限): 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
default(包访问权限):即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
private是私有的,是最严格的,只有当前类(当前JAVA文件)可以调用,甚至继承当前类的子类都不能调用.
protected解决了private的子类不能调用的缺陷,可以理解为一个继承系下的可以调用
打个比方: PUBLIC相当于外人可以调用.private相当于只家庭内可以调用,protected相当于亲戚可以调用.
默认/缺省,个人认为是JAVA比较失败的设计.很多开发组都明确禁止缺省修饰符.
缺省的含义: 包内可以调用,即只要是同一个包内,都可以调用. 局限性比protected 大,比public 小. 从'外人'的角度看,类似于public,但又比public 多了个不伦不类的包限定.
private 私有的;只有类 内部才可以访问;
default 系统默认值;它的访问权限是只有在同包和类内部可以访问;
protected 保护的 ;在子类,同包,类内部都可以访问;
public 公共的;任意的都可以访问