访问权限修饰符对于 Java 来说,非常重要,目前共有四种:public、private、protected和 default(缺省)。
一个类只能使用 public 或者 default 修饰,public 修饰的类你之前已经见到过了,现在我来定义一个缺省权限修饰符的类给你欣赏一下。
class Dog {
}
哈哈,其实也没啥可以欣赏的。缺省意味着这个类可以被同一个包下的其他类进行访问;而 public 意味着这个类可以被所有包下的类进行访问。
假如硬要通过 private 和 protected 来修饰类的话,编译器会生气的,它不同意。
private 可以用来修饰类的构造方法、字段和方法,只能被当前类进行访问。
protected 也可以用来修饰类的构造方法、字段和方法,但它的权限范围更宽一些,可以被同一个包中的类进行访问,或者当前类的子类。
可以通过下面这张图来对比一下四个权限修饰符之间的差别:
- 同一个类中,不管是哪种权限修饰符,都可以访问;
- 同一个包下,private 修饰的无法访问;
- 子类可以访问 public 和 protected 修饰的;
- public修饰符面向世界,哈哈,可以被所有的地方访问到。