bookmark_borderThe difference of “protected” in Java vs C++

在学校的时候一直写C和C++,工作后开始写Java,有些差别是边写边慢慢发现的,比如protected这个权限。

在C++里,protected是只有当前class和subclass可以访问。所有其他的class不行(友元除外)

在Java里,protected是当前class,subclass,和同一package内的其他class可以访问。关键就在于这最后一个区别,在自己写code的时候基本上各个class都在同一个package之内,于是protected的成员在基本所有类都可以访问了,这个访问权限略弱于public(其他package也可以访问),却强过默认的package-private(子类subclass不能访问)。

在Java的访问控制系统内,package有比较重要的地位,总体感觉就是“一个package里面的代码都是你自己管理的,访问权限什么的你拿脑子记住就好了”