Java中访问控制修饰符的详解和示例——Java学习
Java中的四个访问控制修饰符
简述
在Java中共有四个:
- public —— 对外部完全可见
- protected —— 对本包和所有子类可见
- 默认(不需要修饰符)—— 对本包可见
- private —— 仅对本类可见
从上到下,public的开放程度最高。
| - | 对外完全可见 | 对本包和所有子类可见 | 仅对本包可见 | 仅对本类可见 |
|---|---|---|---|---|
| 访问控制修饰符 | Public | Protected | 默认(无修饰符) | Private |
| 同一包中的其它类 | ✓ | ✓ | ✓ | ✗ |
| 同一包中的子类 | ✓ | ✓ | ✓ | ✗ |
| 不同包中的其它类 | ✓ | ✗ | ✗ | ✗ |
| 不同包中的子类 | ✓ | ✓ | ✗ | ✗ |
简言之就是,public全开放,protected对本包和子类(不论是不是在本包中)开放,默认的只对本包开放(不论是不是子类),private仅对本类开放(只有定义它的类内部才能够使用,非常不开放)。
建议在定义每个类的私有字段,也就是成员变量时使用private修饰符,这样才能够确保类的封装性。
实例演示
定义两个包:A包和B包。
A包中有类:aFather 、aClass、aSon;B包中有类:bClass、bSon
定义类:aSon、bSon是aFather的子类。具体如下
包A
aFather.java
定义了一个父类aFather,和各实例字段,如下:
aClass.java
aClass为A包中的一个普通类。
显然在同一包中,除了**private** ,都可以正常访问父类的Public、Protected 和默认定义的实例字段。
aSon.java
aSon为A包(同一包)中的aFather类的子类
同样,同一包中的子类可以正常访问父类的Public、Protected、默认定义 的实例字段。
包B
bClass.java
bClass为B包中的一个普通类。
可以看出,非aFather子类的类:bClass 只能访问A包中类的 Public 的实例字段。
bSon.java
bSon为B包中的,aFather类(A包中)的子类。
而B包中的bSon类 是A包中aFather类的子类,可以访问父类(超类)中由Public、Protected定义的实例字段,其他的无法访问。
由此看出,开头所说:
- public —— 对外部完全可见
- protected —— 对本包和所有子类可见
- 默认(不需要修饰符)—— 对本包可见
- private —— 仅对本类可见
便更易于理解了!
Java中访问控制修饰符的详解和示例——Java学习的更多相关文章
- Java中的 修饰符
java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符 访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...
- Java 中的异常和处理详解
Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...
- Java中final修饰符深入研究
一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...
- Java中各种修饰符与访问修饰符
Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...
- Java中访问修饰符public、private、protecte、default
Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...
- java中的修饰符和基本数据类型
1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...
- 对于Java中权限修饰符的理解
老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...
- Java中常用修饰符浅谈
一.public.protected.default和private修饰符的作用域 public:在java程序中,如果将属性和方法定义为 public 类型,那么此属性和方法所在的类和及其子类,同一 ...
- PHP中访问控制修饰符
访问控制修饰符 形式: class 类名{ 访问控制修饰符 属性或方法定义: } 有3个访问修饰符: public公共的:在所有位置都可访问(使用). protected受保护的:只能再该类内部和 ...
随机推荐
- 如何用 Python 做自动化测试【进阶必看】
一.Selenium 环境部署 1. window 环境部署 1.1 当前环境Win10 64 位系统:Python3.6.2(官方已经更新到了 3.6.4) 官方下载地址:https://www.p ...
- Ethical Hacking - Web Penetration Testing(11)
SQL INJECTION Preventing SQLi Filters can be bypassed. Use a blacklist of commands? Still can be byp ...
- 程序员为什么要使用Markdown
为什么要学习markdown? 一个让你难以拒绝的理由:markdown可以让你养成了记录的习惯. 我自从使用了markdown之后,就喜欢了写文档,记录工作日志,记录周会,记录季度计划,记录学习目标 ...
- 用Python把20年的GDP、人口以及房价数据进行了可视化
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 提到一线城市,大家马上会想到北上广深这四个超级大都 ...
- 你闺女也能看懂的插画版 Kubernetes 指南
Matt Butcher是Deis的平台架构师,热爱哲学,咖啡和精雕细琢的代码.有一天女儿走进书房问他什么是Kubernetes,于是就有了这本插画版的Kubernetes指南,讲述了勇敢的Phipp ...
- 【mysql】- 锁篇(下)
InnoDB存储引擎中的锁 表级锁 表级别的S锁.X锁 在对某个表执行SELECT.INSERT.DELETE.UPDATE语句时,InnoDB存储引擎是不会为这个表添加表级别的S锁或者X锁的 表级别 ...
- 题解 CF510E 【Fox And Dinner】
可以用网络流解决这个题. 注意到\(a_i \geqslant 2\),所以当相邻数字要和为质数时,这两个数要一个为奇数,一个为偶数. 所以就先将所有数按奇偶分为两列,其就构成了一个二分图,二分图中和 ...
- 题解 洛谷 P6378 【[PA2010]Riddle】
首先不难看出对于本题的点与点之间的限制关系,我们可以考虑用\(2-SAT\)来解决,通过从状态\(x\)向状态\(y\)连一条有向边表示若状态\(x\)存在,那么状态\(y\)必须存在. 接下来的处理 ...
- Unity 基于excel2json批处理读取Excel表并反序列化
excel2json是一款将Excel表格文件快速生成json和C#数据类的高效插件,详情了解如下: https://neil3d.github.io/coding/excel2json.html 该 ...
- jsp课堂笔记1
http协议:规范浏览器和服务器交互或通信的规则 https:基于http实现,比http更加安全,提供了身份验证和通信内容加密 服务器:1.配置比较高的电脑 2.他就是一个应用 http1.0: ...