前言:在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://51itzy.com/kjqy/120045.html