public private protected和默认的区别(转自百度)

public private protected和默认的区别

Java中对类以及类中的成员变量和成员方法通过访问控制符(access specifier)进行区分控制。刚学Java语言的同学可能对public private protected以及默认(一般称包访问权限)的区别不是很清楚,尤其是protected和默认的区别。本篇经验就来说说这个事儿。

方法/步骤

  1. 1

    private这个大家都知道,就是只有在本类中才能访问。

    public private protected和默认的区别(转自百度)
  2. 2

    public正好和private相反,在任何地方都能访问。

    public private protected和默认的区别(转自百度)
  3. 3

    protected是在本包内能访问,而在包外只有它的子类能访问。如图,package1这个包中有一个A类,它有一个成员变量a,用protected访问控制符进行修饰。

    public private protected和默认的区别(转自百度)
  4. 4

    如图,在本包中另一个类继承自A,它是可以访问A的这个成员变量的。如果是本包中的一个普通类(也就是不继承自A),也是可以访问A的成员变量的,这个大家可以自行测试。

    public private protected和默认的区别(转自百度)
  5. 5

    如图,在别的包中的一个普通类访问A的成员变量,这个是不可以的。

    public private protected和默认的区别(转自百度)
  6. 6

    但是在别的包中的子类,也就是继承自A的类,访问A的成员变量是可以的。

    public private protected和默认的区别(转自百度)
  7. 7

    再来说默认(包访问权限)。如图,还是package1中的A类的成员变量a,这一次什么也不加。

    public private protected和默认的区别(转自百度)
  8. 8

    和protected一样,只要是同一个包下的类,不管是子类还是其它普通的类,都可以访问A的这个成员变量。

    public private protected和默认的区别(转自百度)
  9. 9

    在另一个包中的类,如果是普通类,和protected一样,是不能访问A类中的这个成员变量的。

    public private protected和默认的区别(转自百度)
  10. 10

    在另一个包中的类,即使是子类,也是不能访问A类中的这个成员变量的。这一点和protected不一样。

    public private protected和默认的区别(转自百度)
  11. 11

    总结一下,private是只有本类中才能访问,public是都能访问,默认(包访问权限)是只有本包内才能访问,包括本包内的子类和普通类,而protected是只要本包内就能访问,包括本包内的子类和普通类,另外别的包内的子类也能访问,但是普通类不能访问。所以说protected和默认(包访问权限)是很相似的,在同一个包内,它们是一样的,而在另一个包内,默认是不能访问的,而protected是只有子类能访问。

    public private protected和默认的区别(转自百度)
     
上一篇:浅谈 Gevent 与 Tornado(转)


下一篇:多线程编程学习笔记——使用异步IO(一)