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. vue学习(九) 使用内联样式设置style样式

    /html <div id="app"> //对象就是无序键值对的集合 <h1 :style="{ color:red, 'font-weight':2 ...

  2. 网络通信机制:Socket、TCP/IP、HTTP

    13.1.1 TCP/IP协议 讲的很抽象,没具体看懂什么是TCP协议,什么是IP协议.IP协议保证消息从一个主机传送到另一个主机,消息在传送的过程中被分割成一个个小包,TCP协议会让两台相互连接的计 ...

  3. python函数里引用全局变量

    python在引用变量的时候尤其要注意变量的作用域,在函数里引用不可变类型变量的时候,函数执行结束后是不会改变全局变量的值的:若想在函数里改变不可变类型全局变量的值时,引用的时候要用”global a ...

  4. laravel 用户认证简单示例

    一.模型代码: 实现接口:\Illuminate\Contracts\Auth\Authenticatable 并引入trait:\Illuminate\Auth\Authenticatable &l ...

  5. python Scrapy 从零开始学习笔记(二)

    在之前的文章中我们简单了解了一下Scrapy 框架和安装及目录的介绍,本章我们将根据 scrapy 框架实现博客园首页博客的爬取及数据处理. 我们先在自定义的目录中通过命令行来构建一个 scrapy ...

  6. Pattern、Matcher的用法

    Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符 ...

  7. SQL Server跟踪工具Profiler的使用

    一.什么是SQL Profiler SQL Server Profiler 是一个功能丰富的界面,用于创建和管理跟踪并分析和重播跟踪结果. 事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进 ...

  8. python小题目汇总

    1.编程计算两个日期之间的天数与周数 Python时间处理---dateutil模块: dateutil模块主要有两个函数,parser和rrule. 其中parser是根据字符串解析成datetim ...

  9. PHP is_resource() 函数

    is_resource() 函数用于检测变量是否为资源类型. PHP 版本要求: PHP 4, P+-HP 5, PHP 7高佣联盟 www.cgewang.com 语法 bool is_resour ...

  10. PHP hebrev() 函数

    实例 反向显示希伯来字符: <?phpecho hebrev("á çùåï äúùñâ");?>高佣联盟 www.cgewang.com 定义和用法 hebrev() ...