java作用域public ,private ,protected 及不写时的区别
public是公用的,其他类都可调用.
private是私有的,是最严格的,只有当前类(当前JAVA文件)可以调用,甚至继承当前类的子类都不能调用.
protected解决了private的子类不能调用的缺陷,可以理解为一个继承系下的可以调用
?
打个比方: PUBLIC相当于外人可以调用.private相当于只家庭内可以调用,protected相当于亲戚可以调用.
?
默认/缺省,个人认为是JAVA比较失败的设计.很多开发组都明确禁止缺省修饰符.
缺省的含义: 包内可以调用,即只要是同一个包内,都可以调用. 局限性比protected 大,比public 小. 从'外人'的角度看,类似于public,但又比public ?多了个不伦不类的包限定.
?
?
作用域????当前类同一package??子孙类????其他package? public??????√√????√?√? protected???√√???√×? friendly????√√????××? private?????√×???××??
?
作用域????当前类???同一package??子孙类????其他package? public??????√????????????√????????????????√?????????????√? protected???√????????????√???????????????√????????????×? friendly????√????????????√????????????????×?????????????×? private?????√????????????×????????????????×?????????????×??
?