Java访问权限

Java访问权限教程

Java 语言 中一共有 4 种访问权限,分别为 private、default(默认)、protected 和 public。

Java private

private 属于私有访问权限,可以用在属性的定义和方法的声明上面,一旦使用了 private 关键字,则只能够再本类中进行声明。

Java default

default 如果一个类里面的属性或者方法没有使用任何的访问权限声明,那么就是默认的访问权限。默认访问权限可以被本包中的类访问,但是其他的包里面的类是不可以访问的。

Java protected

protected 属于受保护的访问权限。一个类中的成员如果使用了 protected 访问权限,则只能被本包及不同包的子类所访问。

Java public

public 属于公共的访问资源,如果一个类中的成员使用了 public 访问权限,就可以在所有的类中被访问,不管是不是在同一个包中。

范围 private default protected public
同一类
同一个包中的类
不同包的子类
其他包中的类

案例

我们先建立一个目录来模拟权限

04 权限目录结构.png

我们定义 ImportClass

package com.haicoder.net.packagetest.impo; public class ImportClass { private String info; protected String message; public String str; String mess; public void printInfo() { System.out.println("I am ImportClass"); } }

定义一个子类

package com.haicoder.net.packagetest.other; import com.haicoder.net.packagetest.impo.ImportClass; public class ImportSubClass extends ImportClass { public void printProtectedInfo() { System.out.println("访问受保护的资源:" + super.message); } }

定义一个测试类

package com.haicoder.net.packagetest; import com.haicoder.net.packagetest.impo.ImportClass; import com.haicoder.net.packagetest.other.ImportSubClass; public class PackageTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); ImportClass importClass = new ImportClass(); importClass.str = "aaa"; importClass.mess = "aaa"; ImportSubClass importSubClass = new ImportSubClass(); importSubClass.message = "aaaaa"; System.out.println("结束"); } }

05 权限编译报错.png
编译报错.png)mess 是默认类型的,在测试类里面不能被访问。message 是 protected 类型的,message 在子类 ImportSubClass 可以被访问,但是在测试类里面,不能被访问。编译就拨错了。

Java访问权限总结

private 只能够被当前类访问。default 是默认的访问权限,被它修饰的属性或方法只能够在同一个类或者同一个包中的类访问。

protected 可以被本包及不同包的子类所访问。public 权限最大,所有的类都可以访问。