原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/11/28/2793339.html

访问级别修饰符决定了其他类是否可以使用它的特定字段或调用特定方法,有两种级别的访问控制:

顶层级别—public,或者包内私有(没有显式的修饰符)

成员级别—public,private,protected,或者包内私有(没有显式的修饰符)

一个类可以使用public修饰,这个情况,类可以在任何地方被其他类访问。如果类没有修饰符(默认,就是包私有),它只能在自己的包内是可见的(包是相关类的一个组,后面会学习的)

在成员级别,你可以使用public修饰符或者是没有修饰符(包内私有),这个和顶层类级别一样,表示一样的含义。对于成员来说,有两个附加的访问修饰符:private和protected.private修饰符表示这个成员只能被自己的类访问,protected修饰符表示,这个成员只能在自己的包内访问(如包内私有),但是,附加的是,在其它包里,可以被它的子类访问。

下面的表格显示每个修饰符的成员访问许可

Access Levels

ModifierClassPackageSubclassWorld

public

Y

Y

Y

Y

protected

Y

Y

Y

N

no modifier

Y

Y

N

N

private

Y

N

N

N

第一列指示,在该访问级别,类本身是否有权限访问成员。正如你看到的,一个类总是可以访问它的成员。第二列只是在同个包的类(不管是否继承的关系)是否有权限访问成员,第三列指示包外的类是否有权限访问该成员。第四列指示全部的类是否有权限访问该成员。

访问级别影响你两个方面。第一,当你使用来自其他来源的类,如Java平台的类,访问级别确定你自己的类可以使用这些类的哪些成员。第二,当你写一个类,你需要决定每一个成员变量和每个方法应该有什么样的访问级别。

让我们来看看类的集合和访问级别如何影响可见性。下图在这个例子中显示四大类,还有它们之间的关系。

说明类和包的访问级别的例子

下面的表显示了Alpha类的成员在每个访问修饰符,它们对于其它类是否可见。

Visibility

ModifierAlphaBetaAlphasubGamma

public

Y

Y

Y

Y

protected

Y

Y

Y

N

no modifier

Y

Y

N

N

private

Y

N

N

N

如何选择访问级别:

如果其他程序员使用你的类,你要确保滥用不会导致发生错误,访问级别可以帮助你做到这一点。

使用最严格的访问级别,对于特定成员来说是合理的。尽可能使用private,除非你有一个很好的理由不用。

除了常量,其他字段避免public(在本教程中的许多例子中使用public字段。这可能有助于简洁的说明,但不建议用于生产代码。)public字段往往导致你一个特定的实现,限制你改变你的代码的灵活性。

成员的访问控制java_java类成员的访问控制(翻译自Java Tutorials)相关推荐

  1. 基类成员函数和派生类成员函数不构成重载

    基类成员和派生类成员的名字一样时会造成遮蔽,这句话对于成员变量很好理解,对于成员函数要引起注意,不管函数的参数如何,只要名字一样就会造成遮蔽.换句话说,基类成员函数和派生类成员函数不会构成重载,如果派 ...

  2. java 类成员访问权限_Java类成员访问权限控制知识总结

    一 前言 这篇文章是很基础的一文,没多大深度,对于开发人员必然是熟练于心.本篇文章的主题是为什么java要设置类成员访问级别?其原因也很简单,就是为了面向对象的封装特性:将类成员使用不同的访问级别控制 ...

  3. 【Java开发语言 03】第三章 面向对象编程(面向对象与面向过程+类和对象+类成员一:属性+类成员二:方法+对象的创建和使用+封装和隐藏+构造器+关键字this,package,import)

    面向对象编程 1 面向对象与面向过程 1.1 java类及类的成员 2 java语言的基本元素:类和对象 2.1 类的语法格式 2.2 创建Java自定义类 2.3 对象的创建及使用 3 类的成员之一 ...

  4. python类中数据成员_Python 入门 之 类成员

    1.类的私有成员 私有: 只能自己拥有 以 __ 开头就是私有内容 对于每一个类的成员而言都有两种形式: - 公有成员,在任何地方都能访问 - 私有成员,只有在类的内部才能使用 私有成员和公有成员的访 ...

  5. java实例变量成员变量_Java的类成员变量、实例变量、类变量,成员方法、实例方法、类方法...

    总是被这些相似的概念搞晕,查阅了资料后做个小总结,以变量为例,方法辨析类似. 1.多胞胎名字汇总辨析 成员变量和成员方法是范围最大的定义,提到成员变量就可以理解成你所定义在一个类体中的各类变量的统称, ...

  6. NS2 分裂机制及代码分析一---解释类成员变量与编译类成员变量互操作

    原文分析见博客地址:http://blog.sina.com.cn/s/blog_8eba0c2a0101blip.html 本文从中摘取几个需要注意到的地方 1.编译类变量与解释类变量的绑定 通常, ...

  7. java中的class 类的作用_Java中Class和单例类的作用与类成员的理解

    Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存 ...

  8. (原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员

    10.3  接口的实现 在继续前,先讨论一下如何定义和实现接口.第9章介绍了接口定义的方式与类相似,使用的代码如下: interface IMyInterface {// Interface memb ...

  9. C++知识点杂记2——类成员指针、嵌套类和union

    一.类成员指针 1.概念 类成员指针指向的是类的非static成员,因为类的static成员是所有类对象共有,所以static成员的指针和普通指针没有区别 2.成员变量指针 示例 class test ...

最新文章

  1. 【转载】Linux 软件安装到 /usr,/usr/local/ 还是 /opt 目录?
  2. 怎么看python帮助手册常见问题商家认证_python认证
  3. httpWebRequest 错误
  4. debian php redis,debian7.7环境下 源码安装redis以及phpredis扩展
  5. 【STBC】Alamouti,STBC误码率仿真
  6. c++ 读取一行的2个数
  7. exe一机一码加密工具_文件夹加密软件有哪些作用?
  8. java修改title_js修改title
  9. Shell编程中Shift的用法(转)
  10. FreeMarker笔记 第二章 数值和类型
  11. oracle和sqlserver数据库直接生成xml
  12. 2021-09-08推荐系统 简述DeepFM模型
  13. Word转PDF,字体格式问题
  14. 台式电脑怎么组装步骤_自己如何组装电脑主机?diy电脑组装教程图解详细步骤+装机心得...
  15. Java解决vue跨域问题
  16. html英文字母大小,英语字母书写笔顺 英语 , 26个英文字母大小写规范书写技巧...
  17. 计算1~N之间所有奇数之和(Java)
  18. 第1章 PyTorch和神经网:1.1 PyTorch和神经网络
  19. 如何从iTunes Store赠送音乐,电影等
  20. 由“西游记”的唐僧扫塔想到的

热门文章

  1. Vue005_ 列表渲染
  2. 大剑无锋之介绍一下B+树【面试推荐】
  3. 拼多多的真实面试题:数亿的用户,如何用Redis统计独立用户访问量
  4. leetcode 1217. Minimum Cost to Move Chips to The Same Position | 1217. 玩筹码(Java)
  5. leetcode 1239. Maximum Length of a Concatenated String with Unique Characters | 1239. 串联字符串的最大长度(回溯)
  6. leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)
  7. 【Spring接MySQL数据库的坑】Could not open JDBC Connection for transaction
  8. leetcode 70. 爬楼梯(C语言)
  9. AI数学基础之:确定图灵机和非确定图灵机
  10. vue office在线编辑_VUE和Antv G6实现在线拓扑图编辑