java中类成员的限定词_Java类中的限定词
java语言中有四种不同的限定词,提供了四种不同的访问权限。
1) private
类中限定为private的成员,只能被这个类本身访问。
如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。
2) default
类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。
3) protected
类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。
4) public
类中限定为public的成员,可以被所有的类访问。
表3-1列出了这些限定词的作用范围。
【表3-1】 java中类的限定词的作用范围比较
=============================================================
|| 同一个类 同一个包的类 不同包的子类 不同包非子类 ||
|| private * ||
|| default * * ||
|| protected * * * ||
|| public * * * * ||
=============================================================
说明:上面这个表,看起来很简单,而且也很容易记忆,但是却蕴含着极为丰富的信息,可以从不同的角度来理解上面的这个表。
比如在同一个类里面时,四个关键词都相当于是public,可以不在乎限定词是什么;在同一个包里面时,除了private限定词外,所有的限定词的作用都完全等同于public。我们经常会思考这样一个问题:一个类的属性和方法是否对外可见?这个问题描述中提到的“可见”二字,当环境为“非子类”时,说白了就是我们能否通过实例化这个类后,用一个对象把这个类的这些字段或者方法给“点”出来,即“某对象.某属性(或某方法)”。因为通常我们都是在不同包的环境下操作的,比如我们会import很多系统的包中的类,诸如“import java.awt.*;”这样的语句,因此我们使用这些包中的类时,它们对我们的可见也就仅仅局限在使用“public”限定词修饰的属性或方法上了,因此大家往往会误以为只有public的东西才能点出来,实则不然,当我们在同一个包中的非子类中也可以把除了private修饰的东西之外的所有属性和方法给“点”出来。其实对于“点”这个运算,可以分两个角度去理解,既然能用到“点”操作,那就代表了我们使用的环境应该是“非子类”,非子类又可以分为“包内”和“非包内”,对于“包内”,只要不是private修饰的东西都能点出来;对于“非包内”则只能是public的东西才能点出来;;;如果是在“子类”中操作时,大家可以思考一下,我们还用“点”操作吗?显然不用了,因为在子类中,父类中定义的东西只要可见的话都可以被你拿过来用,因此根本就用不到点操作,当然这里也要分“包内”和“非包内”。对于default限定词,我们不能显示的使用它来定义属性或方法,只要我们在定义属性或方法的前面什么限定词都不加,就默认的使用了default限定词。
java中类成员的限定词_Java类中的限定词相关推荐
- java中类定义修饰符_Java 中类和方法修饰符
Java 中类和方法修饰符 类的修饰 访问修饰符 修饰符 class 类名 extends 父类名称 implements 接口名称(notes: 访问修饰符符与修饰符的位置可以互换) 访问修饰符 名 ...
- 关于“只有静态常量整型数据成员才可以在类中初始化”
关于"只有静态常量整型数据成员才可以在类中初始化" 关于类中的静态成员变量, 在类中只能声明,不能定义 注意在类的内部只是声明,不是定义 类中的静态变量是属于类的,不属于某个对象! ...
- 创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 编程利用Rectangle输出一个矩形的周长和面积
创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 编程利用Rectangle输出一个矩形的周长和面积 publi ...
- 90页第三题,创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 ,编程利用Rectangle输出一个矩形的
//90页第三题,创建一个 Rectangle类,添加width和lenght两个成员变量 //在 Rectangle类中添加两种方法分别计算矩形的周长和面积 //编程利用Rectangle输出一个矩 ...
- java中类的修饰符_Java中的类修饰符
之前每次写小测试程序的时候,总是把一个类放在一个Java文件中,按理说这样比较规范,可主要原因是我是在不知道怎么在一个文件里放多个类,可见java基础有多差了...只要把类的属性改成默认的就可以了,也 ...
- java 类成员访问权限_Java类成员访问权限控制知识总结
一 前言 这篇文章是很基础的一文,没多大深度,对于开发人员必然是熟练于心.本篇文章的主题是为什么java要设置类成员访问级别?其原因也很简单,就是为了面向对象的封装特性:将类成员使用不同的访问级别控制 ...
- java 类的域_Java类中对象域的初始化
java中,一个类的域(或者说类的属性,类的数据成员)可以是基本数据类型,也可以是对象的引用.对象域如果没有被初始化,会被置为null,如果在置为null的引用上调用方法,我们就会得到一个运行时错误. ...
- java中static的用法_Java类中static的用法
关于Java中static的使用有以下四种情况: 1.静态成员变量 被static修饰的成员变量,叫静态成员变量或类变量:没有被static修饰的变量,叫实例变量. 两者的区别是: 静态 ...
- java类的封装_Java类中的封装
1.Java类中的封装 学习了访问权限修饰符后,应该可以理解封装性的概念和含义.封装性是面向对象三大特征之一 封装性是一种信息隐藏技术 2.封装的概念 在面向对象程式设计方法中,封装(英语:Encap ...
最新文章
- VTK:vtk布尔运算隐式函数BooleanOperationImplicitFunctions用法实战
- linux 怎么添加path环境变量,Linux下怎么添加和查看PATH环境变量
- maven 在pom.xml 中指定仓库位置
- 西瓜书+实战+吴恩达机器学习(四)监督学习之线性回归 Linear Regression
- 对于SQL注入的理解
- php中connect,PHP中的ftp_connect()函数
- 利用cookie爬取QQ邮箱的python脚本
- “完美”解决微信小程序购物车抛物动画,在连续点击时出现计算错误问题,定时器停不下来。
- 解决vmware“二进制转换与此平台长模式不兼容.....”的问题
- 详解窗口句柄,进程ID,进程句柄,窗口与进程之间的关系
- 笔试算法题(17):奇偶数分置数组前后段 反序访问链表
- c语言程序由哪三个部分组成部分,C语言程序的组成部分
- kafka与zookeeper下载安装及kafka常用命令
- 【机器学习】DBSCAN聚类算法
- 初中学校计算机机房管理制度,学校机房管理制度
- ​在Windows 10 下安装 Vmware 时遇到的问题和解决​方法
- PC端实现微信支付功能(Vue2.0)
- 【360补天计划】记第一次漏洞提交
- quartus ModelSim executable not found.
- Kotlin之身份证阅读器(华视)二次开发
热门文章
- 【气象水文】WRF示例运行与后处理软件
- OC7141 PWM 调光的线性降压 LED恒流驱动IC
- 使用Docker Swarm,Docker Compose和Consul扩展到无限(第3/4部分)–蓝绿色部署,自动化和自我修复过程...
- Android10 修改音量级别和默认音量
- 罗德里格斯(Rodrigues)旋转公式及其推导
- 题目78----根据日志时间先后顺序对日志进行排序
- 三角肌中束(02):单臂哑铃侧平举
- MotionNet: 基于鸟瞰图的自主驾驶联合感知与运动预测
- 矩阵分析之 实矩阵分解(2)LU,PLU分解
- ChatGPT fine tune微调+prompt介绍