等级保护测评工作重点难点_重点保护

等级保护测评工作重点难点

在“ Java的一些句子 ”一文中,我写道: “受保护的方法和字段可以在同一包中的类中使用(到目前为止与私有包相同),此外,还可以从其他类中使用受保护的方法和字段,这些类扩展了受保护的字段或方法。”

尽管以上说法是正确的,但它可能无法揭示全部事实,我认为值得一提。

当类中有私有X(方法,字段,类,接口,构造函数)时,可以在顶级类中使用该X。 如前一篇文章所述,使用意味着可以在实例“ this ”中访问X,而在其他实例中,只要代码访问与X在同一顶级类中,就可以访问X。

如果删除X前面的private关键字,则将可见性扩展到包级别。 可以在包中使用X,就像在私有的类中使用X之前一样。

如果我们再走一步,并在X的前面插入关键字protected ,它将在扩展了声明X的类的类中可见,但不能从该类内部以私有X或从内部打包private的方式访问同一方式。相同的包装。 由于protected扩展了私有包对X的可见性,因此,仍然可以以相同的方式在包内使用受保护的X,但在包外不能以相同的方式使用。

不同之处在于,您只能在扩展X功能的代码中访问受保护的X。

以上不是精确的定义。 我在此博客中多次引用的Java语言规范在6.6.2章中详细介绍了我该说些什么? 精确,完整,但阅读起来可能不容易或有趣,这对本文也可能是正确的,但是由于您正在阅读,因此我认为您觉得它很有趣,很有教育意义,或者您有一些非常特定的理由来阅读它。

当您与声明X的类处于同一包中时,可以在其他实例上访问X。 我们可以有一些简单的类来演示这一点。 首先,我们可以有一个扩展的根类:

package a;
public class A {protected void protectedMethod(A a) { }
}

我们有扩展到“ A”的类“ B”,并且在同一包中。

package a;
import a.A;
public class B extends A {@Overrideprotected void protectedMethod(A a) {a.protectedMethod(this);super.protectedMethod(this);}
}

如果我们将类“ B”移动/复制到另一个包,例如:

package b;
import a.A;
public class B extends A {@Overrideprotected void protectedMethod(A a) {a.protectedMethod(this);super.protectedMethod(this);}
}

那么第6行将无法编译。 当它在先前的程序包中时,编译器允许它访问该方法,因为程序包保护使其成为可能。 无论在哪种实现实例中,方法的参数“ a”都在同一包中。 在“ b.B”类的情况下,程序包保护不允许访问,并且因为我们存储在方法参数“ a”中的实际对象实例可能是“ b.B”未扩展的类的实例,因此无法访问它。 它可以是该类示例的实例:

package c;
import a.A;
public class C extends A { }

您可以做的是:

  • 覆盖子类中的方法或
  • 使用关键字super调用父方法。

通常,这实际上是您可以使用其程序包外部的受保护方法执行的所有操作。

翻译自: https://www.javacodegeeks.com/2015/01/fine-points-of-protection.html

等级保护测评工作重点难点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c编译程序是什么?

c编译程序是由计算机厂家提供的一套软件。c编译程序又称c语言编译器,是指用c语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以…

运动基元_基元需要走吗?

运动基元我目前正在使用JSF作为视图技术,使用JPA作为持久层的企业应用程序。 它可能是支持bean或服务方法中的某种东西,但令我震惊:是否有充分的理由在企业应用程序中使用原语? 当我开始围绕J2SE 1.2(或者是J2SE 5.0&…

mysql 三种工作模式_mybatis三种批量插入方式对比【面试+工作】

准备:1.表结构CREATE TABLE t_user (id varchar(32) CHARACTER SET utf8 NOT NULL COMMENT 主键,name varchar(50) CHARACTER SET utf8 DEFAULT NULL COMMENT 用户名,del_flag char(1) CHARACTER SET utf8 DEFAULT NULL COMMENT 删除标示,PRIMARY KEY (id)) ENGINEI…

C 常用新特性(下)

多线程什么是多线程这里就不过多介绍,新特性关于多线程最主要的就是std::thread的使用,它的使用也很简单,看代码:这里记住,std::thread在其对象生命周期结束时必须要调用join()或者detach(),否则程序会term…

ant 路径_在Ant中显示路径

ant 路径在博客文章Java and Ant Properties Refresher和Ant <echoproperties /> Task中 &#xff0c;我写了一篇关于如何了解Ant构建如何看到属性的文章&#xff0c;这有助于更好地理解该构建。 通常情况下&#xff0c;在构建过程中看到构建中使用的各种路径也很有价值&…

java8默认垃圾回收器,Java 8的默认垃圾收集器

What is the default garbage collector for Java 8?When I check the JMX Beans, they reveal it to be the parallel collector for the new generation and the old serial collector for the old generation.解决方案Selecting the default garbage collector (among othe…

c语言中结束本次循环的语句是什么

c语言中结束本次循环的语句是“continue”。控制语句continue只能作用于循环体中&#xff0c;其作用是结束本次循环&#xff0c;跳到判断循环的位置&#xff0c;即重新开始下一次循环。在C语言中&#xff0c;控制语句“continue”用于循环体中结束本次循环&#xff0c;重新开始…

jdk8 字符串_在JDK 8中连接字符串

jdk8 字符串JDK 8引入了语言功能&#xff0c;例如lambda表达式 &#xff0c; 流 &#xff0c;甚至是新的Date / Time API &#xff0c;这些都会改变我们编写Java应用程序的方式。 但是&#xff0c;还有一些新的API和功能可能不太“改变游戏规则”&#xff0c;但仍为Java编程语言…

C语言中要改变循环语句的流程可以使用的语句有哪些

C语言中要改变循环语句的流程可以使用的语句有&#xff1a;break&#xff0c;continue和goto。break语句可以终止循环而执行整个循环语句后面的代码&#xff1b;continue语句可以跳过循环体中剩余的语句而强制进入下一次循环。break关键字当 break 关键字用于 while、for 循环时…

apk图标存放位置_安卓系统下安装完apk程序后,具体的文件夹位置在哪里呢?

展开全部 有的程序的文件夹是自动建立在sd卡上的,有的程序是没有文件夹的,程序位于32313133353236313431303231363533e59b9ee7ad9431333365666238date/app文件夹内,而系统的程序位于system/app文件夹内。 软件安装完成后,就会在date/app目录出现一个apk文件。 这个文件相当…

java 线程什么时候出栈_在Java中给出的时间

java 线程什么时候出栈tl; dr&#xff0c;您可以使用标签来阐明给定的测试时间样式。 什么时候给出&#xff1f; 给定的时间&#xff0c;然后是指定系统行为的一种常用样式&#xff0c;其中您的测试分为三个部分。 给定的部分列出了测试的先决条件&#xff0c;即在您开始之前…

java 2_Java(二)

二维数组是由一维数组组成的数组选择排序原理将数组中每一个元素与第一个元素相比较&#xff0c;如果这个元素小于第一个元素&#xff0c;则交换这两个元素循环第一条规则&#xff0c;找出最小元素&#xff0c;放于第一个位置经过n-1轮比较完成排序冒泡排序原理逐一比较数组中相…

continue语句只用于循环语句中,它的作用是什么?

continue语句只用于循环语句中&#xff0c;它的作用是&#xff1a;跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在while、for循环中&#xff0c;常与if条件语句一起使用&#xff0c;判断条件是否成立。continue语句只用在while、for循环中&#xff0c;它的作…

成为java高手_我如何想成为Java

成为java高手我喜欢Java。 我喜欢用Java编程。 但是在使用Python一段时间后&#xff0c;我希望对其进行一些更改。 它几乎纯粹是语法上的&#xff0c;因此可能有更好的JVM语言&#xff0c;但是我并不真正感兴趣&#xff0c;因为我仍然需要使用普通的Java来工作。 我意识到这些更…

在c语言中引用数组元素时,其数组下标的数据类型允许是什么

在c语言中引用数组元素时&#xff0c;其数组下标的数据类型允许是&#xff1a;整型常量或整型表达式。C语言规定只能逐个引用数组元素而不能一次引用整个数组&#xff0c;数据元素的表示形式为“数组名[下标]”&#xff0c;下标可以是整型常量或整型表达式。数组中只有一维数组…

在c语言中char型数据在内存中的储存形式为什么

在c语言中char型数据在内存中的储存形式为“ASCII码”。在C语言中&#xff0c;将一个字符常量放到一个字符变量中&#xff0c;实际并不是把该字符本身放到内存单元中&#xff0c;而是将与该字符相对应的ASCII码放到存储单元中。c语言 char型字符型数据类型就是字符1、字符数据的…

集合相减算法java_集算器协助java处理结构化文本的集合运算

有两个小文件&#xff1a;f1.txt和f2.txt&#xff0c;第一行是列名&#xff0c;现在需要对文件中的Name字段进行交集运算。部分数据如下&#xff1a;文件f1.txt:文件f2.txt:集算器代码&#xff1a;A1、B1&#xff1a;用import函数将文件读[A1.(Name),B1.(Name)].isect()入内存&…

netbeans插件_如何编写NetBeans插件

netbeans插件是否想在NetBeans IDE中添加功能或自动执行某些操作&#xff1f; 跟随我们编写您的第一个NetBeans插件。 让我们超越简单的工具栏示例 &#xff0c;创建一个可以自动更新的插件。 该代码基于NetBeans的WakaTime插件 。 我们的示例插件将仅打印Hello World语句&…

c语言程序从哪里开始执行

c语言程序的执行总是起始于main函数。在一个C语言源程序中&#xff0c;无论main函数书写在程序的前部&#xff0c;还是后部&#xff0c;程序的执行总是从main函数开始&#xff0c;并且在main函数中结束。但需要注意的是&#xff0c;也是有特殊情况的&#xff0c;若是代码中出现…

基于价值链的流程框架分类_基于价值的类

基于价值链的流程框架分类在Java 8中&#xff0c;某些类在Javadoc中有一个小注释&#xff0c;说明它们是基于值的类 。 其中包括简短说明的链接&#xff0c;以及有关不使用它们的限制。 这很容易被忽略&#xff0c;如果这样做&#xff0c;则可能会在将来的Java版本中以微妙的方…