The 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里面的代码都是你自己管理的,访问权限什么的你拿脑子记住就好了”

Leave a Reply

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax