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

java访问修饰符

在 Java 里,privatepublic 属于访问修饰符,其作用是管控类、方法、变量等的访问权限。除此之外,Java 还有 protected 访问修饰符以及默认(不写修饰符)的访问级别。下面为你详细介绍这四种访问修饰符:

1. private

  • 含义private 是访问限制最严格的修饰符。被 private 修饰的成员(变量、方法等)仅能在定义它的类内部被访问。
  • 用途:一般用于封装类的内部实现细节,防止外部直接访问和修改,以此保证数据的安全性和完整性。
  • 示例代码
class Person {// 私有成员变量private String name;private int age;// 私有方法private void printInfo() {System.out.println("Name: " + name + ", Age: " + age);}// 公共方法,用于间接访问私有成员public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public void showInfo() {// 在类内部可以访问私有方法printInfo();}
}public class Main {public static void main(String[] args) {Person person = new Person();person.setName("Alice");person.setAge(25);// 不能直接访问私有成员变量和方法// person.name = "Bob";  // 编译错误// person.printInfo();   // 编译错误person.showInfo();}
}

2. public

  • 含义public 是访问限制最宽松的修饰符。被 public 修饰的成员可以在任何地方被访问,只要能获取到该类的实例。
  • 用途:通常用于定义类的公共接口,让外部代码能够方便地使用类的功能。
  • 示例代码
class Calculator {// 公共方法public int add(int a, int b) {return a + b;}
}public class Main {public static void main(String[] args) {Calculator calculator = new Calculator();// 可以在其他类中直接访问公共方法int result = calculator.add(3, 5);System.out.println("Result: " + result);}
}

3. protected

  • 含义:被 protected 修饰的成员可以在同一包内的任何类中被访问,同时也能在不同包的子类中被访问。
  • 用途:常用于实现继承关系中的代码复用和扩展,让子类能够访问父类的一些成员,但又对外部类进行一定的限制。
  • 示例代码
// 父类
package parentPackage;
public class Parent {// 受保护的成员变量protected int protectedValue = 10;// 受保护的方法protected void printValue() {System.out.println("Protected value: " + protectedValue);}
}// 同一包内的类
package parentPackage;
public class SamePackageClass {public static void main(String[] args) {Parent parent = new Parent();// 可以在同一包内访问受保护的成员System.out.println(parent.protectedValue);parent.printValue();}
}// 不同包的子类
package childPackage;
import parentPackage.Parent;
public class Child extends Parent {public void accessParentProtectedMembers() {// 可以在子类中访问受保护的成员System.out.println(protectedValue);printValue();}
}

4. 默认(不写修饰符)

  • 含义:若成员没有使用任何访问修饰符,那么它具有默认的访问级别,也称为包访问权限。具有默认访问级别的成员只能在同一包内的类中被访问。
  • 用途:用于在包内部组织和封装代码,让包内的类可以相互访问,但对外部包进行限制。
  • 示例代码
// 同一包内的类
package myPackage;
class MyClass {// 默认访问级别的成员变量String defaultValue = "Default";// 默认访问级别的方法void printDefaultValue() {System.out.println(defaultValue);}
}// 同一包内的另一个类
package myPackage;
public class AnotherClass {public static void main(String[] args) {MyClass myClass = new MyClass();// 可以在同一包内访问默认访问级别的成员System.out.println(myClass.defaultValue);myClass.printDefaultValue();}
}

下面以表格形式总结这四种访问修饰符的访问权限:

访问修饰符同一类内同一包内不同包的子类不同包的非子类
private可以不可以不可以不可以
默认可以可以不可以不可以
protected可以可以可以不可以
public可以可以可以可以

相关文章:

  • SSM学习
  • LibAI Lab走进西浦:重塑“AI+建筑”教育
  • C语言之操作符
  • 从 PID 到 Agent:工业控制算法的五代进化史与智能协同革命
  • 哪些因素会影响远程视频监控的质量?浅述EasyCVR视频智能诊断技术
  • 手动创建一份konga对应helm的chart项目
  • 【学习笔记】机器学习(Machine Learning) | 第五章(1)| 分类与逻辑回归
  • 浅谈C# record关键字
  • DeepSeek谈《凤凰项目 一个IT运维的传奇故事》
  • 蛋白质数据库UniProt介绍
  • git中reset和checkout的用法
  • Webug4.0通关笔记06- 第8关CSV注入
  • 文件读取操作
  • 【论文速读】《Scaling Scaling Laws with Board Games》
  • 数据结构学习篇——哈希
  • 冰冰一号教程网--介绍采用vuepress搭建个人博客
  • Git 忽略文件配置 .gitignore
  • 客户服务升级:智能语音外呼系统在多领域的场景应用解析
  • navicat中导出数据表结构并在word更改为三线表(适用于navicat导不出doc)
  • rails 创建数据库表
  • 微博:严厉打击对肖某董某事件蹭炒热点、编造故事博流量等行为
  • 杨轶群任莆田市荔城区人民政府副区长
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛即将焕新登场
  • 韩国检方结束对尹锡悦私宅的扣押搜查
  • 孕妇乘坐高铁突发临产,广西铁路部门协助送医平安产子
  • 李铁案二审今日宣判