zoukankan      html  css  js  c++  java
  • 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 会报错。

  • 相关阅读:
    错误:Char 26: fatal error: reference to non-static member function must be called
    【C++】去除字符串string中的空格(两头空格、所有空格)
    【C/C++】字符串string与字符数组char*的相互转换
    【C++】if-else编程陷阱
    【数据结构与算法】《剑指offer》学习笔记----第一章、第二章 基础知识(含1-15题)
    LeetCode运行报错: reference binding to null pointer of type 'value_type'
    【深度学习机配置】Dell服务站各组件型号记录
    【C++、二分法】LeetCode744. 寻找比目标字母大的最小字母
    Python视频抽帧成图片
    Windows10自带的录屏软件,十分强大
  • 原文地址:https://www.cnblogs.com/JiXianSen/p/12142971.html
Copyright © 2011-2022 走看看