大家好,欢迎来到IT知识分享网。
前言:在java编程中变量和方法前我们通常要加修饰词来标识他的一个作用范围。常用的有四种,我们要灵活使用,这样才能设计出更健壮、易扩展的代码。
- public:
①具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。(我们可以通过get方法访问,也可以对象.属性名来访问) - private:
①类的创建者和内部方法使用(注意只能是本类,不是本对象),内部类也无法使用 - protected:
①子类可以访问protected修饰的变量和方法。(只要是子类,即使不同包)。②同包中可以访问protected。 - 不写:
①声明时没有加修饰符,认为是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