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受保护的:只能再该类内部和 ...
随机推荐
- DEX文件解析--6、dex文件字段和方法定义解析
一.前言 前几篇文章链接: DEX文件解析---1.dex文件头解析 DEX文件解析---2.Dex文件checksum(校验和)解析 DEX文件解析--3. ...
- Python Ethical Hacking - VULNERABILITY SCANNER(3)
Polish the Python code using sending requests in a session Class Scanner. #!/usr/bin/env python impo ...
- 架构师都该懂的 CAP 定理
面对可能出现的网络延迟,不可预估的请求流量等情况,设计一个分布式系统,我们通常围绕系统高可用,数据一致性的目标去规划和实现,想要完全实现这个目标,却并非易事.由此,分布式系统领域诞生了一个基本定理,即 ...
- 拿下Netty这座城,从现在开始!
你好,我是彤哥,技术公号主"彤哥读源码"的运营者. 其实,我刚学习Netty的时候,也是很迷茫的,直到有一天,一个同事收到了阿里的offer,他要去阿里做中台了,临走前他偷偷地告诉 ...
- abp vnext 开发快速入门 1 认识框架
最近在做一个项目,用的框架是Abp vnext ,不是Abp, 我自己也是刚开始用这个框架来做项目,难免要查资料,这个框架官方有中文文档,可以到官网www.abp.io 去查看,国内也有一些写了相关的 ...
- mybatis sqlsession与sqlsquery、transaction、connection
sqlsession和connection 一个sqlsession一般对应一个connection,并且mybatis默认每次获取session都会开启一个事务,且不自动提交事务.如果更新操作完成后 ...
- Python Python Python 100个练手项目
1.淘宝模拟登录2.天猫商品数据爬虫3.爬取淘宝我已购买的宝贝数据4.每天不同时间段通过微信发消息提醒女友5.爬取5K分辨率超清唯美壁纸6.爬取豆瓣排行榜电影数据(含GUI界面版)7.多线程+代理池爬 ...
- 使用 Azure Blob Stoage 实现一个静态文件服务器
什么是Azure Blob Stoage Azure Blob Stoage 是微软Azure的对象存储服务.国内的云一般叫OSS,是一种用来存储非结构化数据的服务,比如音频,视频,图片,文本等等.用 ...
- 利用div显示隐藏实现的分页效果
实现步骤: 1.创建对应切换div <div class="bottom_daohang"> <div class="bottom_daohang_zo ...
- 利用Python的装饰器一键开启多线程
记录一下自己写的烂代码 import time import threading def WithThread(obj): """这是一个开启线程的装饰器"&q ...