Java中的四个访问控制修饰符

简述

在Java中共有四个:

  1. public —— 对外部完全可见
  2. protected —— 对本包和所有子类可见
  3. 默认(不需要修饰符)—— 对本包可见
  4. 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定义的实例字段,其他的无法访问。

由此看出,开头所说:

  1. public —— 对外部完全可见
  2. protected —— 对本包和所有子类可见
  3. 默认(不需要修饰符)—— 对本包可见
  4. private —— 仅对本类可见

便更易于理解了!

Java中访问控制修饰符的详解和示例——Java学习的更多相关文章

  1. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  2. Java 中的异常和处理详解

    Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...

  3. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  4. Java中各种修饰符与访问修饰符

    Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...

  5. Java中访问修饰符public、private、protecte、default

    Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...

  6. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  7. 对于Java中权限修饰符的理解

    老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...

  8. Java中常用修饰符浅谈

    一.public.protected.default和private修饰符的作用域 public:在java程序中,如果将属性和方法定义为 public 类型,那么此属性和方法所在的类和及其子类,同一 ...

  9. PHP中访问控制修饰符

    访问控制修饰符 形式: class  类名{ 访问控制修饰符  属性或方法定义: } 有3个访问修饰符: public公共的:在所有位置都可访问(使用). protected受保护的:只能再该类内部和 ...

随机推荐

  1. DEX文件解析--6、dex文件字段和方法定义解析

    一.前言    前几篇文章链接:       DEX文件解析---1.dex文件头解析       DEX文件解析---2.Dex文件checksum(校验和)解析       DEX文件解析--3. ...

  2. Python Ethical Hacking - VULNERABILITY SCANNER(3)

    Polish the Python code using sending requests in a session Class Scanner. #!/usr/bin/env python impo ...

  3. 架构师都该懂的 CAP 定理

    面对可能出现的网络延迟,不可预估的请求流量等情况,设计一个分布式系统,我们通常围绕系统高可用,数据一致性的目标去规划和实现,想要完全实现这个目标,却并非易事.由此,分布式系统领域诞生了一个基本定理,即 ...

  4. 拿下Netty这座城,从现在开始!

    你好,我是彤哥,技术公号主"彤哥读源码"的运营者. 其实,我刚学习Netty的时候,也是很迷茫的,直到有一天,一个同事收到了阿里的offer,他要去阿里做中台了,临走前他偷偷地告诉 ...

  5. abp vnext 开发快速入门 1 认识框架

    最近在做一个项目,用的框架是Abp vnext ,不是Abp, 我自己也是刚开始用这个框架来做项目,难免要查资料,这个框架官方有中文文档,可以到官网www.abp.io 去查看,国内也有一些写了相关的 ...

  6. mybatis sqlsession与sqlsquery、transaction、connection

    sqlsession和connection 一个sqlsession一般对应一个connection,并且mybatis默认每次获取session都会开启一个事务,且不自动提交事务.如果更新操作完成后 ...

  7. Python Python Python 100个练手项目

    1.淘宝模拟登录2.天猫商品数据爬虫3.爬取淘宝我已购买的宝贝数据4.每天不同时间段通过微信发消息提醒女友5.爬取5K分辨率超清唯美壁纸6.爬取豆瓣排行榜电影数据(含GUI界面版)7.多线程+代理池爬 ...

  8. 使用 Azure Blob Stoage 实现一个静态文件服务器

    什么是Azure Blob Stoage Azure Blob Stoage 是微软Azure的对象存储服务.国内的云一般叫OSS,是一种用来存储非结构化数据的服务,比如音频,视频,图片,文本等等.用 ...

  9. 利用div显示隐藏实现的分页效果

    实现步骤: 1.创建对应切换div <div class="bottom_daohang"> <div class="bottom_daohang_zo ...

  10. 利用Python的装饰器一键开启多线程

    记录一下自己写的烂代码 import time import threading def WithThread(obj): """这是一个开启线程的装饰器"&q ...