在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes(即同一个包),认为都是自己的朋友friendly。
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
4、default:java的默认访问权限,当没有使用上面提到的任何访问限定词时,就使用它,这种权限通常被称为包访问权限,在这种权限下,类可以访问在同一个包中的其他类的成员,也即可以访问我们前面说的朋友,在包之外,这些成员如同指定了private。
本文来自www.itxxz.com
这几天在看看java基础部分,有一个概念一直比较模糊就是java 变量作用域的修饰的作用范围;也看了一些网上资料不过说的不够精确。这里整理一下:
public:类本身和任何包的任何类都访问
private 只有类本身可以访问,其他类想访问可以通过该类的成员方法访问如getter/setter
protected:保护的,这个和缺省的比较容易混淆,记住最主要区别是:protected可以在不同包的子类被访问,而friendly不可以。
protected可以在类本身、同包的子类,不同包的子类,同包的非子类 被访问
缺省的:可以在类本身,同包的子类,同包的非子类 被访问。
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
4、default:java的默认访问权限,当没有使用上面提到的任何访问限定词时,就使用它,这种权限通常被称为包访问权限,在这种权限下,类可以访问在同一个包中的其他类的成员,也即可以访问我们前面说的朋友,在包之外,这些成员如同指定了private。
本文来自www.itxxz.com
这几天在看看java基础部分,有一个概念一直比较模糊就是java 变量作用域的修饰的作用范围;也看了一些网上资料不过说的不够精确。这里整理一下:
public:类本身和任何包的任何类都访问
private 只有类本身可以访问,其他类想访问可以通过该类的成员方法访问如getter/setter
protected:保护的,这个和缺省的比较容易混淆,记住最主要区别是:protected可以在不同包的子类被访问,而friendly不可以。
protected可以在类本身、同包的子类,不同包的子类,同包的非子类 被访问
缺省的:可以在类本身,同包的子类,同包的非子类 被访问。
Public,protected,private解析
Public成员可以被同一个类或同一个包或不同包下的类都可以访问。
Protected成员可以被同一个类或同一个包下的类可以访问,不能被不同包下的类访问。
Private成员可以被于同一个类访问,不能被同一个包或不同包下的类访问。
同类
同包
不同包子类
不同包非子类
private yes
default yes yes
protected yes yes yes
public yes yes yes yes
private yes
default yes yes
protected yes yes yes
public yes yes yes yes
特别说明一点
protected
在不同包子类下为
yes
的情况:
包外子类有权访问父类成员是什么意思?它指子类继承该成员。
然而,这不意味着包外子类能够使用父类实例的引用访问该成员。
换句话说,保护=继承。
保护不是指子类能够处理受保护的父类成员,就好像它是公有的那样。
因此,如果包外子类获得父类引用,该子类不能在父类引用上使用点运算符来
.
访问受保护的成员。
子类只能通过继承看到受保护的成员。