当前位置: 首页 > news >正文

JAVA 的四种访问权限

在Java编程中,访问权限是非常重要的概念,因为它可以保证代码的安全性和封装性。访问权限有四种,分别是public、protected、default和private。

在这里插入图片描述
private:如果一个类的方法或者变量被private修饰,那么这个类的方法或者变量只能在该类本身中被访问,在类外以及其他类中都不能显示地进行访问。

default默认访问权限):如果一个类的方法或变量被包访问权限修饰,也就意味着只能在同一个包中的其他类中显示地调用该类的方法或者变量,在不同包中的类中不能显示地调用该类的方法或变量。

protected:如果一个类的方法或者变量被protected修饰,对于同一个包的类,这个类的方法或变量是可以被访问的。对于不同包的类,只有继承于该类的类才可以访问到该类的方法或者变量。

public:被public修饰的方法或者变量,在任何地方都是可见的。

private

package com.ymqx.访问权限;public class Person {private String name = "test";public String getName(){//只能在本类中被访问System.out.println(this.name);return this.name;}
}
package com.ymqx.访问权限;public class Test {public static void main(String[] args){Person person = new Person();//Person类外不能直接访问//System.out.println(person.a);person.getName();}
}输出:test

方法或者变量被private修饰,只能在本类中被访问。

default

package com.ymqx.访问权限;public class Person {String name = "test";public String getName(){System.out.println(this.name);return this.name;}
}
package com.ymqx.访问权限;public class Test {public static void main(String[] args){Person person = new Person();//同一个包中的其他类中显示地调用System.out.println(person.name);person.getName();}
}输出:
test
test

同一个包中的其他类中显示地调用。

在这里插入图片描述

package com.ymqx.访问权限2;import com.ymqx.访问权限.Person;public class Test{public static void main(String[] args){Person person = new Person();//不同的包,Person类不能显示地调用nameSystem.out.println(person.name);person.getName();}
}

不同包中的类中不能显示地调用。

protected

package com.ymqx.访问权限;public class Person {protected String name = "test";public String getName(){System.out.println(this.name);return this.name;}
}
package com.ymqx.访问权限2;import com.ymqx.访问权限.Person;public class Zi extends Person {public void getPersonName() {//不同的包,继承可以访问父类protected修饰变量System.out.println(super.name);}
}

不同包的类,只有继承于该类的类才可以访问到该类 protected 修饰方法或者变量。

public

package com.ymqx.访问权限;public class Person {public String name = "test";public String getName(){System.out.println(this.name);return this.name;}
}
package com.ymqx.访问权限2;import com.ymqx.访问权限.Person;public class Test{public static void main(String[] args){Person person = new Person();//同一个包中的其他类中显示地调用System.out.println(person.name);person.getName();}
}输出:
test
test

不同包中的类也可以显示地调用。

小结

  • 四种访问权限从小到大:private < default(默认访问权限)< protected < public。
  • 当定义变量时不加任何修饰会默认为默认权限。
  • 在子类中访问父类中的变量时需要用super。
http://www.lryc.cn/news/163250.html

相关文章:

  • 【个人博客系统网站】注册与登录 · 加盐加密验密算法 · 上传头像
  • [H5动画制作系列] Sprite及Text Demo
  • 目标检测YOLO实战应用案例100讲-毫米波辐射图像去模糊重建与目标检测
  • Android10 SystemUI系列(一)概述
  • SpringMVC的常用注解,参数传递以及页面跳转的使用
  • Java“牵手”易贝商品列表数据,关键词搜索易贝商品数据接口,易贝API申请指南
  • java中HashMap如何根据value的值去获取key是多少
  • Python|OpenCV-色彩空间之RGB轨迹调试板(5)
  • 安全生产:CVE-2020-11022/CVE-2020-11023漏洞解析
  • 手写Spring:第17章-通过三级缓存解决循环依赖
  • C#使用proto
  • Java基础知识面试题(一)(英语答案)
  • 基于csv数据建立线性回归模型并预测进行评估模型表现案例实现
  • MySQL学习问题记录
  • YMatrix 5.0 与天翼云完成产品兼容性认证
  • 蓝桥杯官网练习题(旋转)
  • Jtti:Linux如何开机启动bootstrap
  • qt之事件循环与线程的关系
  • Python 变量的定义和数据类型的转换
  • Android Java JVM常见问答分析与总结
  • 【业务功能篇102】springboot+mybatisPlus分页查询,统一返回封装规范
  • 中国手机新进程:折叠屏出海的荣耀,5G中回归的华为
  • 安装RabbitMQ的各种问题(包括已注册成windows服务后,再次重新安装,删除服务重新注册遇到的问题)
  • 多线程与高并发——并发编程(6)
  • Elasticsearch——Docker单机部署安装
  • 基于AHP模型指标权重分析python整理
  • 用python实现基本数据结构【02/4】
  • 蓝牙Mesh专有DFU
  • 浅谈综合管廊智慧运维管理平台应用研究
  • Httpservletrequest与Httpservletresponse