权限修饰符有 private
、 default
、 protected
、 public
四种,各自作用的范围不同。其中private
、 default
、 protected
、 public
四种都可以修饰属性和方法,而只有 default
和 public
可以修饰类。
-
private
:仅在当前类中可以访问public class A{ private int age; public void eat(){ System.out.println(age); age = 10; } }
-
default
:缺省(默认)修饰符,省略不写,写了反而会报错。在同一个包下的其他类都可以访问。public class A{ int age; // 省略default public void eat(){ System.out.println(age); age = 10; } } public class Test{ public static void main(String[] args){ A a = new A(); a.age = 100; } }
-
protected
:最大到不同包下的子类可以访问(自然也可以被同一包中的其他类访问,都无需使用该成员所在类的对象进行访问)package com.test1; public class A{ protected int age; // 省略default public void eat(){ System.out.println(age); age = 10; } }
package com.test2; public class B extends A{ public void a(){ System.out.println(age); } }
-
public
:在整个项目中都可以访问
总的来说,四个权限修饰符的作用范围可以用下表表示:
同一个类 | 同一个包 | 子类 | 所有类 | |
---|---|---|---|---|
private |
✅ | |||
default |
✅ | ✅ | ||
protected |
✅ | ✅ | ✅ | |
public |
✅ | ✅ | ✅ | ✅ |
所以以后写代码时一般用 private
修饰属性,用 public
修饰方法和类。