对于java中访问权限的理解与解析
来源:互联网 发布:免费天庭淘宝城txt下载 编辑:程序博客网 时间:2024/06/07 17:24
对于刚开始学习java的“程序员”来说,或者说是刚刚接触面向对象编程的人,对于四个访问权限的理解刚开始难免会有所困难,话不多说,进入正题,看我的总结:
1、首先呢,对于java的访问权限共有4个
private 默认default protected public
他们的权限范围也按照以上的顺序逐渐增大,解释一下默认default的类型,就是什么都不写,由系统默认
2、其次,用法:类前面允许使用两种,即 public 和 default(默认),类成员变量,类成员函数,实例成员变量,实例成员函数,4种都可以使用,都符合要求
3、理解:private (当前类访问权限) default(包访问权限) protected(子类访问权限) public(公共访问权限)
private : 只允许被当前的类访问
default(默认):可以被当前的类,也可以被同一个包下的所有类访问
protected:可以被当前的类访问,也可以被同一个包下的所有类访问,还可以被不同的包下的有继承实现关系的子类访问
public:可以被当前的类访问,也可以被同一个包的所有类访问,还可以被不同包下的类访问。。。。换言之,public 属于完全暴露,完全透明的权限。
4、文字看不懂,看看代码,帮助理解下。
被public修饰的类Persion1;
package encapsulation;public class Persion1 {private static int priVai;protected static int proVai;public static int pubVai;static int defaultVai;private static void priTest(){System.out.println("我是一个私有(当前类访问权限)的方法!");}protected static void proTest(){System.out.println("我是一个保护(protected子类访问权限)的方法");}public static void pubTest(){System.out.println("我是一个public(公共访问权限)的方法");}static void defaultTest(){System.out.println("我是一个默认(包访问权限)的方法");}}
与Persion1在同一个包下;
package encapsulation;public class Persion2 {public static void main(String[] args) {Persion1 p = new Persion1();//可以看出在同一个包下,调用public修饰的类的成员(变量和方法)只有 私有的 变量和方法不能被调用//同一个包下可以访问3种System.out.println(p.proVai);System.out.println(p.pubVai);System.out.println(p.defaultVai);p.pubTest();p.proTest();p.defaultTest();}}
与Persion1在不同的包下;
package encapsulation2;import encapsulation.Persion1;public class Persion3 {public static void main(String[] args) {Persion1 p = new Persion1();//可以看出在不同的包下,调用 public修饰的类 的成员(变量和方法)只有 共有的(public) 变量和方法能被调用System.out.println(p.pubVai);p.pubTest();}}
与Persion1在不同的包下,但继承了Persion1,成为其子类;
package encapsulation2;import encapsulation.Persion1;public class Persion4 extends Persion1 {public static void main(String[] args) {//不同的包下,在有继承的关系的情况下,能访问public 和 protected 修饰的变量和方法//注意不要用父类的一个对象在这里调用,那是父类的作用域 问题!!!System.out.println(pubVai);System.out.println(proVai);pubTest();proTest();}}
package encapsulation;class Persion10 {private static int priVai;protected static int proVai;public static int pubVai;static int defaultVai;private static void priTest(){System.out.println("我是一个私有(当前类访问权限)的方法!");}protected static void proTest(){System.out.println("我是一个保护(protected子类访问权限)的方法");}public static void pubTest(){System.out.println("我是一个public(公共访问权限)的方法");}static void defaultTest(){System.out.println("我是一个默认(包访问权限)的方法");}}
package encapsulation;public class Persion20 {public static void main(String[] args) {Persion1 p = new Persion1();//可以看出在同一个包下,调用public修饰的类的成员(变量和方法)只有 私有的 变量和方法不能被调用//同一个包下可以访问3种System.out.println(p.proVai);System.out.println(p.pubVai);System.out.println(p.defaultVai);p.pubTest();p.proTest();p.defaultTest();}}
和Persion10在不同的包下;
package encapsulation2;import encapsulation.Persion1;public class Persion30 {public static void main(String[] args) {Persion1 p = new Persion1();//可以看出在不同的包下,调用 public修饰的类 的成员(变量和方法)只有 共有的(public) 变量和方法能被调用System.out.println(p.pubVai);p.pubTest();}}
package encapsulation2;//以下的两行代码是错误的://import encapsulation.Persion10;//class Persion40 extends Persion10 {//}/*错误的原因: The type encapsulation.Persion10 is not visible default只是包的访问权限!! */
下面这个是一个简单的布局
这东西还是自己亲手试一下,脑海里立马就清楚了 ^ - ^
阅读全文
0 0
- 对于java中访问权限的理解与解析
- 对于JAVA中访问权限修饰符的理解
- Java中对于Interface的总结与理解
- 对于解析的理解
- C++和java对于 "多态 访问权限"的区别
- 我所理解的Java访问权限
- 关于java访问权限的理解
- Java中的访问权限的理解
- C++与Java中类访问权限的差异
- java类的访问权限解析
- java中对于String类的理解
- Java中对于main函数的理解
- Java中对于callback的理解
- 对于java中clone()函数的理解
- 对于java中接口的理解
- 对于java中运算符‘%’的理解
- java中对于面向对象的理解
- C++对于类访问权限public,protected,private的深刻理解
- [驱动注册]platform_driver_register()与platform_device_register()
- 人脸特征点检测(二)——Tweaked CNN(TCNN)
- dlib 12 dlib自带demo DNN基础demo
- 线性回归的实现
- Js 动态添加、删除 对象属性
- 对于java中访问权限的理解与解析
- TextView实现自动换行
- mysql学习之四
- @Controller 获取参数与值
- 双鸭山大学?
- POJ 1364 King (差分约束)
- 算法 卡特兰Catalan数
- Eigen
- Docker切换到国内下载源方法