這四個作用域的可見范圍如下表所示。

說明:如果在修飾的元素上面沒有寫任何訪問修飾符,則表示friendly。

作用域    當前類 同一package 子孫類 其他package

public   √     √          √      √

protected √     √          √     ×

friendly  √     √          ×     ×

private   √     ×          ×     ×

備注:只要記住了有4種訪問權限,4個訪問范圍,然后將全選和范圍在水平和垂直方向上分別按排從小到大或從大到小的順序排列,就很容易畫出上面的圖了。

public的類、類屬變量及方法,包內及包外的任何類均可以訪問;

protected的類、類屬變量及方法,包內的任何類,及包外的那些繼承了此類的子類才能訪問;

private的類、類屬變量及方法,包內包外的任何類均不能訪問;

如果一個類、類屬變量及方法不以這三種修飾符來修飾,它就是friendly類型的,那么包內的任何類都可以訪問它,而包外的任何類都不能訪問它(包括包外繼承了此類的子類),因此,這種類、類屬變量及方法對包內的其他類是友好的,開放的,而對包外的其他類是關閉的。

類:

訪問修飾符 修飾符class類名稱extends 父類名稱 implement接口名稱

(訪問修飾符與修飾符的位置可以互換)

訪問修飾符

名稱

說明

備注

public

可以被所有類訪問(使用)

public類必須定義在和類名相同的同名文件中

package

可以被同一個包中的類訪問(使用)

默認的訪問權限,可以省略此關鍵字,可以定義在和public類的同一個文件中

修飾符

名稱

說明

備注

final

使用此修飾符的類不能夠被繼承

abstract

如果要使用abstract類,之前必須首先建一個繼承abstract類的新類,新類中實現abstract類中的抽象方法。

類只要有一個abstract方法,類就必須定義為abstract,但abstract類不一定非要保護abstract方法不可

變量

l        Java中沒有全局變量,只有方法變量、實例變量(類中的非靜態變量)、類變量(類中的靜態變量)。

l        方法中的變量不能夠有訪問修飾符。所以下面訪問修飾符表僅針對於在類中定義的變量。

l        聲明實例變量時,如果沒有賦初值,將被初始化為null(引用類型)或者0、false(原始類型)。

l        可以通過實例變量初始化器來初始化較復雜的實例變量,實例變量初始化器是一個用{}包含的語句塊,在類的構造器被調用時運行,運行於父類構造器之后,構造器之前。

l        類變量(靜態變量)也可以通過類變量初始化器來進行初始化,類變量初始化器是一個用static{}包含的語句塊,只可能被初始化一次。

訪問修飾符

名稱

說明

備注

public

可以被任何類訪問

protected

可以被同一包中的所有類訪問

可以被所有子類訪問

子類沒有在同一包中也可以訪問

private

只能夠被當前類的方法訪問

缺省

無訪問修飾符

可以被同一包中的所有類訪問

如果子類沒有在同一個包中,也不能訪問

修飾符

名稱

說明

備注

static

靜態變量(又稱為類變量,其它的稱為實例變量)

可以被類的所有實例共享。

並不需要創建類的實例就可以訪問靜態變量

final

常量,值只能夠分配一次,不能更改

注意不要使用const,雖然它和C、C++中的const關鍵字含義一樣

可以同static一起使用,避免對類的每個實例維護一個拷貝

transient

告訴編譯器,在類對象序列化的時候,此變量不需要持久保存

主要是因為改變量可以通過其它變量來得到,使用它是為了性能的問題

volatile

指出可能有多個線程修改此變量,要求編譯器優化以保證對此變量的修改能夠被正確的處理

方法

訪問修飾符修飾符返回類型方法名稱(參數列表)throws違例列表

l        類的構造器方法不能夠有修飾符、返回類型和throws子句

l        類的構造器方法被調用時,它首先調用父類的構造器方法,然后運行實例變量和靜態變量的初始化器,然后才運行構造器本身。

l        如果構造器方法沒有顯示的調用一個父類的構造器,那么編譯器會自動為它加上一個默認的super(),而如果父類又沒有默認的無參數構造器,編譯器就會報錯。super必須是構造器方法的第一個子句。

l        注意理解private構造器方法的使用技巧。

訪問修飾符

名稱

說明

備注

public

可以從所有類訪問

protected

可以被同一包中的所有類訪問

可以被所有子類訪問

子類沒有在同一包中也可以訪問

private

只能夠被當前類的方法訪問

缺省

無訪問修飾符

可以被同一包中的所有類訪問

如果子類沒有在同一個包中,也不能訪問

修飾符

名稱

說明

備注

static

靜態方法(又稱為類方法,其它的稱為實例方法)

提供不依賴於類實例的服務

並不需要創建類的實例就可以訪問靜態方法

final

防止任何子類重載該方法

注意不要使用const,雖然它和C、C++中的const關鍵字含義一樣

可以同static一起使用,避免對類的每個實例維護一個拷貝

abstract

抽象方法,類中已聲明而沒有實現的方法

不能將static方法、final方法或者類的構造器方法聲明為abstract

native

用該修飾符定義的方法在類中沒有實現,而大多數情況下該方法的實現是用C、C++編寫的。

參見Sun的Java Native接口(JNI),JNI提供了運行時加載一個native方法的實現,並將其於一個Java類關聯的功能

synchronized

多線程的支持

當一個此方法被調用時,沒有其它線程能夠調用該方法,其它的synchronized方法也不能調用該方法,直到該方法返回

接口

訪問修飾符interface接口名稱extends接口列表

l        接口不能夠定義其聲明的方法的任何實現

l        接口中的變量總是需要定義為“public static final接口名稱”,但可以不包含這些修飾符,編譯器默認就是這樣,顯示的包含修飾符主要是為了程序清晰

訪問修飾符

名稱

說明

備注

public

所有

無訪問修飾符(默認)

同一個包內

java friendly 子包,黑馬程序員 java 修飾符類型(public,protected,private,friendly)相关推荐

  1. JAVA修饰符类型(public,protected,private,friendly)

    JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问: protected的类.类属变量及方法, ...

  2. java导出jar包后,程序运行时读取图片、音乐资源文件

    java导出jar包后,程序运行时读取图片.音乐资源文件 运行时程序就可以把图片.音乐资源加载进入了 start jre/bin/java -jar 名称.jar

  3. java包间通信,诊断Java代码: 消除包间的耦合关联[Java编程]

    赞助商链接 本文"诊断Java代码: 消除包间的耦合关联[Java编程]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自 ...

  4. java中forward和redirect_好程序员Java教程分享:Forward和Redirect的区别

    Java教程分享:Forward和Redirect的区别,用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉 ...

  5. Java关键字系列(public,protected,private)

    Java关键字系列(public,protected,private) public.protected和private做为java访问权限修饰词而使用. 首先要明白,java中的每个定义(定义类.字 ...

  6. java web swing 教程_好程序员Java教程解读什么是swing

    原标题:好程序员Java教程解读什么是swing 好程序员Java教程解读什么是swing,swing是java GUI应用程序,也就是java做的桌面应用.运行swing程序要求用户电脑上有java ...

  7. JAVA SE 第一章 计算机、程序和Java概述

    第一章 计算机.程序和JAVA概述 1.1什么是计算机 ※中央处理器 中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).它的功能主要是解释 ...

  8. java 小偷_浅谈小偷程序之Java

    浅谈小偷程序之Java 题外话:如果用EditPlus作为编辑器的话如果保存的格式默认为unicode的话那么在里面写中文用resin作为应用服务器的话就可能出现报500 Servlet错误哦!主要是 ...

  9. java个人小管家代码_Java程序设计基础—Java小管家系统构建

    课题一 Java桌面小管家项目分析 任务1 Java桌面小管家项目分析 课题二 了解Java语言 任务2 编写第一个Java程序 课题三 面向对象程序设计思想 任务3 为小管家设计类 任务4 实现小管 ...

最新文章

  1. Windows7 自动更新时遇到故障
  2. RuntimeError: Found dtype Double but expected Float”
  3. 关于 Bootstrap的知识
  4. 成功解决AttributeError: module tensorflow.image has no attribute resize
  5. Python是一门什么样的语言
  6. draw_circle_mod预生成交互式圆形
  7. GNU 关闭 MMU 和 Icache 和 Dcache
  8. 基于PHP+MySQL的物流配送管理系统平台
  9. 【SQL】数据库模糊查询
  10. 旧iPhone手机钱包中公交卡 银行卡 转移到新手机iPhone11上
  11. A8板卡AM3352移植环境搭建记录
  12. Gossip 协议简介
  13. 2021西工大计算机专硕,计算机专硕2021考研形势分析,考研小白戳
  14. 磊科NBR100企业有线路由器IP和Mac地址绑定教程
  15. roboone机器人_ROBOONE机器人总部地址在哪里?
  16. 2019113_房价预测
  17. vs code python插件_vs code Python code runner配置 , 飞跃|Fly
  18. C# 对Excel表格中的数据进行排序
  19. 学计算机用啥u盘好,U盘制作工具哪个好用?2020U盘制作工具推荐
  20. 【转载】国家集训队论文分类

热门文章

  1. IDT系列:(二)中断处理过程,使用bochs调试IDT中的中断服务程序
  2. delphi初级教程之delphi断点调试一
  3. Socket之TCP服务器【Python】
  4. C++中的指针与引用
  5. 深入理解CPU的调度原理
  6. 干货!Elasticsearch性能优化实战指南
  7. 你真的懂 timeout 吗?
  8. 真实世界的 TCP HOL blocking
  9. WebRTC的现状和未来:专访W3C WebRTC Chair Bernard Aboba(上)
  10. 大型前端项目的断点调试共享化和复用化实践