java中4种修饰符访问权限的区别及详解全过程
2017-04-17 17:29
676 查看
下面详细讲述下它们的访问权限问题。(同一个类中除内部类外所有修饰符都是可以访问的,所以下面排除这种情况。)
首先在这里把它们的访问权限表示出来:
访问权限 类 包 子类 其他包
public ∨ ∨ ∨ ∨
protect ∨ ∨ ∨ ×
default ∨ ∨ × ×
private ∨ × × ×
方法/步骤
首先,说明public的权限问题,定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。这里要注意:当重写父类成员函数时,子类的成员函数不能比父类的成员函数权限小,一般重写把权限定义相同即可。
代码如图所示:
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418122601226-845711781.png)
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418122706366-1782535519.png)
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418122816991-231771390.png)
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418123344726-1414507902.png)
上边把类都建好了,然后开始测试,如果均能编译通过,就说明用public修饰的类在本类、同包、子类、其他包中互相访问都是可以的。测试结果如下:(事实证明可以访问)
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418122913101-1425008213.png)
再来说明protect权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。
这里要注意:public可以修饰任何类而且类名要与文件名相同,protected不可以修饰类。
Person代码如图所示,其他3个类同上:
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418122929398-1052306932.png)
同样开始测试protected权限问题,如果Person、People、Student能编译通过,就说明用protected修饰的类在本类、同包、子类中互相访问都是可以的,而Computer编译不通过说明protected不可以在包外没有继承关系的类中互相访问。测试结果如下:
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418122942132-905749367.png)
接着说明default权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。
这里要注意:default(不写默认指定default)同public一样可以修饰任何类而且类名要与文件名相同。
Person代码如图所示,其他3个类同上:
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160419085314070-1716002060.png)
继续开始测试default权限问题,如果Person、People能编译通过,就说明用default修饰的类在本类、同包中互相访问都是可以的,而Student、Computer编译不通过说明default不可以在包外不管有没有继承关系的类都不可以互相访问。测试结果如下:
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418123525179-270658163.png)
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418123538273-1592006756.png)
最后说明private权限问题,同样定义4个类Person、People、Student、Computer,分别比较本类、同包、子类、其他包的区别。
这里要注意:private同protected一样不可以修饰类。
Person代码如图所示,其他3个类同上:
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418123601648-125989854.png)
最后测试private权限问题,private意思是私有的,如果Person能编译通过而People、Student、Computer编译不通过,就说明用private修饰的类只能在本类中访问。测试结果如下:
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418123619976-1465501077.png)
综上所述,java中4种修饰符访问权限的区别及详解全过程就此演示完了,再一次说明java语言的严谨性和安全性,我们在以后使用这4中修饰符时创建一个类,这个类的权限尽量要小,这样才能减少漏洞和提高安全性,从而体现java面向对象的封装性。
最后如图再回忆一下java中4个修饰符的访问权限:
![](http://images2015.cnblogs.com/blog/938515/201604/938515-20160418123701648-126573053.png)
相关文章推荐
- java中4种修饰符访问权限的区别及详解全过程,final修饰符 ,static修饰符 ,abstract修饰符
- java中4种修饰符访问权限的区别及详解全过程
- java中四种修饰符访问权限的区别及详解过程(一个链接)
- java中4种修饰符访问权限的区别
- Java访问权限修饰符详解
- 举例详解Java中的访问权限修饰符
- java中4种访问修饰符的区别
- Java访问权限修饰符的区别
- java中4种修饰符访问权限
- Java言语4种访问权限修饰符简介
- Java访问权限修饰符的区别
- java4种访问权限区别
- Java中访问权限修饰符public protected 缺省默认 private的用法总结(转)
- 关于Java访问修饰符、访问权限的问题
- JAVA访问权限修饰符用法总结
- java和C#访问修饰符的区别
- Java【public、private、protected区别】-访问权限
- Java访问权限修饰符
- java中访问权限修饰符学习笔记
- Java中访问权限修饰符(转自JavaEye)