您现在的位置:主页 > java下午茶 > >

public、private、protected、default的区别



时间: 2014-08-11 22:04     来源 : IT学习者      点击:

关键词: java    修饰符   


在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes(即同一个包),认为都是自己的朋友friendly。
 1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
 2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

官网:http://www.itxxz.com


 3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
4、default:java的默认访问权限,当没有使用上面提到的任何访问限定词时,就使用它,这种权限通常被称为包访问权限,在这种权限下,类可以访问在同一个包中的其他类的成员,也即可以访问我们前面说的朋友,在包之外,这些成员如同指定了private。
             本文来自www.itxxz.com
这几天在看看java基础部分,有一个概念一直比较模糊就是java 变量作用域的修饰的作用范围;也看了一些网上资料不过说的不够精确。这里整理一下:
public:类本身和任何包的任何类都访问
private 只有类本身可以访问,其他类想访问可以通过该类的成员方法访问如getter/setter
protected:保护的,这个和缺省的比较容易混淆,记住最主要区别是:protected可以在不同包的子类被访问,而friendly不可以。

IT学习者(www.itxxz.com)


protected可以在类本身、同包的子类,不同包的子类,同包的非子类 被访问
缺省的:可以在类本身,同包的子类,同包的非子类 被访问。

Public,protected,private解析
Public成员可以被同一个类或同一个包或不同包下的类都可以访问。
Protected成员可以被同一个类或同一个包下的类可以访问,不能被不同包下的类访问。
Private成员可以被于同一个类访问,不能被同一个包或不同包下的类访问。
 
                    同类              同包    不同包子类     不同包非子类
copyright www.itxxz.com

private        yes
default         yes              yes
protected    yes              yes          yes   
public          yes              yes          yes                      yes
特别说明一点protected在不同包子类下为yes的情况:
包外子类有权访问父类成员是什么意思?它指子类继承该成员。 然而,这不意味着包外子类能够使用父类实例的引用访问该成员。换句话说,保护=继承。保护不是指子类能够处理受保护的父类成员,就好像它是公有的那样。因此,如果包外子类获得父类引用,该子类不能在父类引用上使用点运算符来.访问受保护的成员。子类只能通过继承看到受保护的成员。






文章除注明转载外,均为IT学习者原创或编译
欢迎任何形式的转载,但务必请以超链接形式注明出处
本文出自:IT学习者
链接地址:http://www.itxxz.com



微信公众号:喝咖啡的螃蟹

喝咖啡的螃蟹
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
  • kkk
    2016-07-12 17:56:59发表

    看完明白多了

  • hello
    2016-04-12 10:46:31发表

    说的很好

  • Ivan莨
    2015-12-24 14:05:34发表

    总结很准确,语言也简单易懂。

  • fuck
    2015-06-18 20:10:05发表

    wrfsdfdsf