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

java中public、private、protected、不写的区别前言 在 java 编程中变量和方法前我们通常要加修饰词来标识他的一个作用范围

大家好,欢迎来到IT知识分享网。

前言:在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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/150716.html

(0)
上一篇 2025-03-17 16:15
下一篇 2025-03-17 16:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信