java中的四个修饰词(访问权限)

Java类成员的访问控制权限

有了包的概念之后,下面就可以开始为读者讲解 JAVA 语言之中的访问控制权限 的概念了。在 JAVA 中有四种访问控制权限,分别为:private、default、protected、public。 

1、 private 访问控制符  

在前面已经介绍了 private 访问控制符的作用,如果一个成员方法或成员变量名前 使用了 private 访问控制符,那么这个成员只能在这个类的内部使用。    

注意:  不能在方法体内声明的变量前加 private 修饰符。

2、 默认访问控制符  

如果一个成员方法或成员变量名前没有使用任何访问控制符,就称这个成员所拥 有的是默认的(default)访问控制符。默认的访问控制成员可以被这个包中的其它类 访问。如果一个子类与其父类位于不同的包中,子类也不能访问父类中的默认访问控 制成员。  

3、 protected 访问控制符  

如果一个成员方法或成员变量名前使用了 protected 访问控制符,那么这个成员既 可以被同一个包中的其它类访问,也可以被不同包中的子类访问。

3、 protected 访问控制符  

如果一个成员方法或成员变量名前使用了 protected 访问控制符,那么这个成员既 可以被同一个包中的其它类访问,也可以被不同包中的子类访问。

4、 public 访问控制符  

如果一个成员方法或成员变量名前使用了 public 访问控制符,那么这个成员可以 被所有的类访问,不管访问类与被访问类是否在同一个包中。


对于 private、default、public 三种控制权限,前面已经为读者介绍过了,下 面的范例为读者讲解 protected 关键字的使用方法:

范例:Person.java  

01 package demo.java.a  

02  

03 public class Person

04 {  

05     protected String name  

06     public String talk()

07     {  

08        return "Person —— >> talk()"  

09     }

10 } 

程序说明:  

程序第 5 行声明一 String 类型的属性 name,该变量用 protected 关键字声明,所 以此属性只能在本类及其子类中使用。

范例:Student.java

01 package demo.java.b  

02 import demo.java.a.*  

03  

04 public class Student extends Person

05 {  

06      public Student(String name)

07 {

08           this.name = name  

09           }

10      public String talk()

11      {

12           return "Person —— >> talk() , "+this.name

13       }

14 }

程序说明:

1、 程序第 2 行,导入 Person 类。  

2、 程序第 4 行 Student 类继承自 Person 类  

3、 程序第 8 行 Student 类访问了 Person 类中的 name 属性

范例:TestPackage4.java

01 package demo.java.c  

02 import demo.java.b.*

03

04 class TestPackage4

05 {

06      public static void main(String[] args)

07      {

08          Student s = new Student("javafans")

09          s.name = "javafans"

10          System.out.println(s.talk())  

11       }

12 }

编译结果:

TestPackage4.java:9: name has protected access in demo.java.a.Person  

s.name = "javafans"  

  ^

1 error

可以发现,在程序第 9 行,通过对象调用受保护的属性,所以程序在编译时 JDK 会报错。

原文地址:https://www.cnblogs.com/JiXianSen/p/12142971.html