2026/4/18 6:44:05
网站建设
项目流程
动画视频模板网站,网站建设插件代码大全,提供手机自适应网站建设,p2p网站建设的步骤过程文章目录彻底解析 Java 访问修饰符#xff1a;public、private、protected 及默认的区别#xff1f;什么是访问修饰符#xff1f;第一部分#xff1a;public#xff08;公共的#xff09;public 的作用范围public 的应用场景示例代码第二部分#xff1a;private#xf…文章目录彻底解析 Java 访问修饰符public、private、protected 及默认的区别什么是访问修饰符第一部分public公共的public 的作用范围public 的应用场景示例代码第二部分private私有的private 的作用范围private 的应用场景示例代码第三部分protected受保护的protected 的作用范围protected 的应用场景示例代码第四部分默认无修饰符默认的作用范围默认的使用场景示例代码总结理解这些规则并合理应用它们将帮助我们写出更高质量的代码。 领取 | 1000 套高质量面试题大合集无套路闫工带你飞一把彻底解析 Java 访问修饰符public、private、protected 及默认的区别作为一名 Java 开发者你是否曾经对那些神秘的访问修饰符感到困惑比如 public、private、protected 以及那个没有名字的“默认”访问级别。别担心闫工来帮你理清这些概念在这篇文章中我们将彻底解析这四种访问修饰符的区别和应用场景并通过代码示例来帮助你更好地理解它们。记住掌握访问修饰符是成为一名优秀 Java 开发者的必经之路什么是访问修饰符在 Java 中访问修饰符用于控制类、方法或变量的可见性和可访问性。简单来说访问修饰符决定了其他类是否可以访问这些成员如方法和变量。Java 提供了四个访问修饰符publicprivateprotected默认无修饰符每个修饰符都有不同的作用范围和使用场景。接下来我们将逐一分析它们的特点并通过代码示例来展示它们的实际效果。第一部分public公共的public是最宽松的访问修饰符它表示“完全公开”。任何类都可以访问被 public 修饰的方法或变量无论这些类是在同一个包中还是在不同的包中。public 的作用范围同一类可以访问。同一个包中的其他类可以访问。不同包中的类如果使用了 import 语句也可以访问。public 的应用场景当你希望某个方法或变量对其他类完全开放时就可以使用 public。例如类的构造函数通常会设置为 public以便其他类能够创建该类的对象。类的 getter 和 setter 方法通常是 public因为它们允许外部代码访问和修改对象的状态。示例代码// 定义一个类其中包含 public 方法和变量publicclassCar{publicStringbrand;// 公共变量publicvoiddrive(){// 公共方法System.out.println(-driving the car...);}}// 在另一个类中访问 public 成员publicclassTestCar{publicstaticvoidmain(String[]args){CarmyCarnewCar();myCar.brandToyota;// 可以直接访问 brand 变量myCar.drive();// 可以直接调用 drive 方法}}从上面的代码可以看到TestCar 类可以轻松地访问 Car 类中的 public 成员。这展示了 public 的开放性和便利性。第二部分private私有的private则是相反它是最严格的访问修饰符。被 private 修饰的方法或变量只能在声明它的类中访问其他任何类都无法直接访问它。private 的作用范围同一类可以访问。同一个包中的其他类无法访问。不同包中的类也无法访问。private 的应用场景当你希望某个方法或变量只在当前类内部使用时就可以使用 private。例如类的内部辅助方法通常会设置为 private因为它们不需要被外部调用。类的某些敏感数据如密码、令牌可以设置为 private以防止被篡改。示例代码// 定义一个类其中包含 private 方法和变量publicclassPerson{privateStringpassword;// 私有变量privatevoidcheckPassword(){// 私有方法System.out.println(Checking password...);}}// 在另一个类中尝试访问 private 成员publicclassTestPerson{publicstaticvoidmain(String[]args){PersonpersonnewPerson();person.password123456;// 编译错误无法访问 private 变量person.checkPassword();// 编译错误无法调用 private 方法}}从上面的代码可以看到TestPerson 类无法直接访问 Person 类中的 private 成员。这确保了数据的安全性和封装性。第三部分protected受保护的protected是一个介于 public 和 private 之间的访问修饰符。它比 private 更宽松但比 public 更严格。被 protected 修饰的方法或变量可以在以下情况下访问同一类可以访问。同一个包中的其他类可以访问。不同包中的子类也可以访问。protected 的作用范围同一包中的类可以访问。不同包中的子类可以访问但必须通过继承关系。其他情况无法访问。protected 的应用场景当你希望某个方法或变量在同一个包中或者被子类继承时使用就可以选择 protected。例如类的内部状态可能需要被子类访问但不希望公开给所有外部类。某些方法可能需要在同包中协作同时允许子类重写。示例代码// 定义一个父类其中包含 protected 方法和变量publicclassAnimal{protectedStringname;// 受保护的变量protectedvoideat(){// 受保护的方法System.out.println(Eating...);}}// 同一包中的子类可以访问 protected 成员classDogextendsAnimal{publicvoidbark(){nameBuddy;// 可以访问父类的 protected 变量eat();// 可以调用父类的 protected 方法}}// 不同包中的子类也可以访问 protected 成员packagecom.example.newPackage;importcom.example.Animal;publicclassCatextendsAnimal{publicvoidsleep(){nameWhiskers;// 可以访问父类的 protected 变量eat();// 可以调用父类的 protected 方法}}// 不同包且非子类无法访问 protected 成员packagecom.example.newPackage;publicclassTestProtected{publicstaticvoidmain(String[]args){AnimalanimalnewAnimal();animal.nameTest;// 编译错误无法访问 protected 变量animal.eat();// 编译错误无法调用 protected 方法}}从上面的代码可以看到Dog 类同一包中可以访问父类 Animal 的 protected 成员。Cat 类不同包中的子类也可以访问父类 Animal 的 protected 成员。TestProtected 类非子类且不在同一包无法访问 protected 成员。这展示了 protected 的灵活性和安全性。第四部分默认无修饰符如果你在声明方法或变量时没有显式地指定任何访问修饰符那么它将具有默认访问级别。默认访问级别也被称为“package-private”因为它只允许同一包中的类进行访问。默认的作用范围同一类可以访问。同一个包中的其他类可以访问。不同包中的类无法访问即使它们是子类。默认的使用场景当你希望某个方法或变量在同一个包中协作但不希望公开给其他包时可以选择默认访问级别。例如某些工具类可能需要与同包中的类进行协作但不需要暴露给外部。一些内部实现细节可以在同一包中共享而不影响封装性。示例代码// 定义一个类其中包含默认方法和变量publicclassUtils{Stringname;// 默认访问级别voidprint(){// 默认访问级别System.out.println(Printing...);}}// 同一包中的类可以访问默认成员classTestUtils{publicstaticvoidmain(String[]args){UtilsutilsnewUtils();utils.nameTest;// 可以访问utils.print();// 可以调用}}// 不同包中的类无法访问默认成员packagecom.example.newPackage;publicclassTestDefault{publicstaticvoidmain(String[]args){UtilsutilsnewUtils();utils.nameTest;// 编译错误无法访问默认成员utils.print();// 编译错误无法调用默认方法}}从上面的代码可以看到TestUtils 类同一包中可以访问 Utils 的默认成员。TestDefault 类不同包中无法访问 Utils 的默认成员。这展示了默认访问级别的局限性和封装性。总结在 Java 中访问修饰符是控制类、方法和变量可见性的关键工具。通过合理使用 public、private、protected 和默认访问级别我们可以确保代码的安全性、灵活性和可维护性。public完全开放任何地方都可以访问。private严格限制只有同一类可以访问。protected受保护的允许同包和子类访问。默认只在同一包中可见适合内部协作。理解这些规则并合理应用它们将帮助我们写出更高质量的代码。 领取 | 1000 套高质量面试题大合集无套路闫工带你飞一把成体系的面试题无论你是大佬还是小白都需要一套JAVA体系的面试题我已经上岸了你也想上岸吗闫工精心准备了程序准备面试想系统提升技术实力闫工精心整理了1000 套涵盖前端、后端、算法、数据库、操作系统、网络、设计模式等方向的面试真题 详细解析并附赠高频考点总结、简历模板、面经合集等实用资料✅ 覆盖大厂高频题型✅ 按知识点分类查漏补缺超方便✅ 持续更新助你拿下心仪 Offer免费领取 点击这里获取资料已帮助数千位开发者成功上岸下一个就是你✨