2025年java中public、private、protected、不写的区别

java中public、private、protected、不写的区别前言 在 java 编程中变量和方法前我们通常要加修饰词来标识他的一个作用范围 常用的有四种 我们要灵活使用 这样才能设计出更健壮 易扩展的代码 public 具有最大的访问权限 可以访问任何一个在 classpath 下的类 接口 异常等 它往往用于对外的情况 也就是对象或类对外的一种接口的形式

大家好,我是讯享网,很高兴认识大家。

前言:在java编程中变量和方法前我们通常要加修饰词来标识他的一个作用范围。常用的有四种,我们要灵活使用,这样才能设计出更健壮、易扩展的代码。


  1. public:
    ①具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。(我们可以通过get方法访问,也可以对象.属性名来访问)
  2. private:
    ①类的创建者和内部方法使用(注意只能是本类,不是本对象),内部类也无法使用
  3. protected:
    ①子类可以访问protected修饰的变量和方法。(只要是子类,即使不同包)。②同包中可以访问protected。


    讯享网

  4. 不写:
    ①声明时没有加修饰符,认为是friendly修饰,包内部访问。

测试代码

/ * 父类 * * @author lijianbo * */ public class Parent { 
    // 任何地方都可以访问 public String publicName; // 只能类本身使用,对象都无法使用,内部类也无法使用 private String privateStr = "privateStr"; // 受保护的方法,只能在本类,同包,子类中访问 protected String protectedStr = "protectedStr"; // 不写修饰符,同包中访问 String noDeclarationStr = "没有修饰符修饰的Str"; public String getPublicName() { return publicName + getPrivateStr(); } public void setPublicName(String publicName) { this.publicName = publicName; } private String getPrivateStr() { return privateStr; } protected String getProtectedStr() { return protectedStr; } } // 内部类 class InnerClass { public static void main(String[] args) { // getPrivateStr(); error 内部类也无法访问私有的 } }

讯享网
讯享网/ * 子类 * * @author lijianbo * */ public class Sun extends Parent { 
    // protected 修饰的可以使用 public String getName() { return protectedStr; } public String getName2() { return getProtectedStr(); } }
/ * 测试public、private、protected、不写修饰符 * * @author lijianbo * */ public class authorityTest { 
    public static void main(String[] args) { /* * public 修饰的项目中任何地方都可以访问 */ Parent parent = new Parent(); parent.setPublicName("public名字"); String publicName = parent.getPublicName(); System.out.println(publicName); // 对象.属性名 String publicName2 = parent.publicName; System.err.println(publicName2); /* * protected 同包可以访问 */ parent.getProtectedStr(); System.out.println("--------------------"); // 子类中可以获取父类的protect方法、属性(即时不同包可以访问) Sun sun = new Sun(); String protectedStr1 = sun.protectedStr; System.out.println(protectedStr1); String protectedStr2 = sun.getProtectedStr(); System.out.println(protectedStr2); /* * 没有修饰符修饰,认为是friendly修饰,同包访问 */ String noDeclarationStr = parent.noDeclarationStr; System.err.println(noDeclarationStr); } }

打印结果为:
public名字privateStr
public名字


protectedStr
protectedStr
没有修饰符修饰的Str

小讯
上一篇 2025-02-24 07:25
下一篇 2025-03-23 14:35

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120045.html