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

锁门与开窗:搞懂Java的访问控制修饰符

在Java中,封装就像给房间加了锁,你可以控制谁能进来、谁不能。这就是所谓的访问控制修饰符。Java提供了四种不同的访问控制修饰符,分别是:privatepublicprotected和默认的(什么都不写)。这些修饰符就像房间的门锁和窗户,让你决定谁可以访问类中的属性和方法。


private:把门锁上,只有自己能进

如果你把属性或者方法设置成private,就相当于给它加了把锁,只有类自己能访问,其他任何地方都进不来。

例子:

class Person {private String name;private void sayHello() {System.out.println("你好,我是" + name);}
}

在这个例子中,namesayHello()都是private的,只有Person类自己能用,其他类无论怎么尝试都进不来。


public:大门敞开,谁都能进

如果你把某个属性或方法设置为public,就像敞开了大门,任何人、任何类都能进来访问。

例子:

class Person {public String name;public void sayHello() {System.out.println("你好,我是" + name);}
}

这里,namesayHello()都是public,所以任何其他类都可以轻松访问这个属性和方法。


protected:只让家人和朋友进

protected是个有点特殊的访问控制修饰符。它就像是为家人和好朋友(即子类和同一个包中的类)开了一扇窗,只有他们能进来访问,外人是进不来的。

例子:

class Person {protected String name;protected void sayHello() {System.out.println("你好,我是" + name);}
}

在这个例子里,namesayHello()protected的,意味着它们只能被同一个包里的类,或者继承Person类的子类访问。


默认(什么都不写):同包好友可以进

如果你不写任何修饰符(也就是默认访问权限),那么只有同一个包中的类可以访问它,就像只对同一街区的邻居开放访问权。

例子:

class Person {String name; // 没有修饰符,默认访问权限void sayHello() {System.out.println("你好,我是" + name);}
}

这里,namesayHello()没有任何修饰符,所以它们的访问权限是包级别的,只有在同一个包中的类可以访问。


什么时候用哪个修饰符?
  • private:当你想保护数据,只允许类自己访问时用它。
  • public:当你希望所有人都能访问某个属性或方法时用它。
  • protected:当你希望子类或同一个包中的类可以访问,但外部其他类不能时用它。
  • 默认(包级别访问):当你只想让同一个包里的类访问,不需要protected那么广泛时用它。

封装的好处:控制数据的访问

通过使用不同的访问控制修饰符,你可以更好地保护类的内部数据,避免外界对数据的随意修改。封装还可以提高代码的安全性和可维护性,让类变得更“内敛”,只暴露必要的信息。

Java的访问控制修饰符就像是房子的锁和窗户,你可以灵活控制谁能进来,谁不能,既保证了数据的安全性,又让代码清晰可控。


http://www.mrgr.cn/news/57426.html

相关文章:

  • UE5蓝图中整理节点的方法
  • kconfig语法(一)
  • 华为交换机S5700不同网段用户限速配置实例
  • gis中用栅格计算器或加权总和后图层不显示,值也明显不对
  • 视图库对接系列(GA-T 1400)二十六、视图库对接系列(级联)查询订阅
  • 免费送源码:Node.JS+Express+MySQL Express 流浪动物救助系统 计算机毕业设计原创定制
  • C++——从一个正方体类(Cube)和球体类(Sphere),派生出圆柱体类(Cylinder),设计成员函数,能够输出正方体、球体、圆柱体的面积和体积。
  • kconfig语法(二)
  • 数据结构 ——— C语言实现链式队列
  • 第五十四章 安全元素的详细信息 - DerivedKeyToken 详情
  • nginx负载均衡机制实现用户无感更新服务
  • 郑州市风景园林专项设计资质人员设置类别
  • 【蓝队技能】【Python规则开发】文件分析微步在线推送文件变化监控流量分析
  • 用Python实现批量解压所有ZIP文件
  • 债券的基础知识(一)
  • L1.【Leetcode笔记】删除有序数组中重复项
  • 从React Hooks看React的本质
  • mongoDB(初识(一)基本概念 ACID、 CAP、 BASE)
  • ECharts饼图-饼图34,附视频讲解与代码下载
  • C语言中#error的作用