Java的protected关键字的可见性

Java中的四种访问权限(private,public,protected,无修饰) /实体类属性和数据库字段名称不一致//实体类属性和数据库字段名称不一致return id;return age;emp.test();//直接调用public修饰的变量//private修饰的变量进行赋值//调用private修饰的变量1、public修饰符定义的属性和方法通过对象实例化进行调用,2、private修饰的属性通过set、get方法进行调用。 阅读详情


前言

修饰符private、protected、public都称为可见性修饰符(visibility modifier)或可访问性修饰符(accessibility modifer),因为它们指定如何访问类和类的成员。
相信很多朋友都对private、public这两个修饰符很熟悉了,本文重点讨论一下关于protected修饰符的可见性。


一、几种修饰符的可见性

几种修饰符可见性递增顺序如下:
修饰符可见性顺序递增下表总结了类中成员的可访问性:
可见性表格

使用private修饰符可以完全隐藏类的成员,这样,就不能从类外直接访问它们。不使用修饰符(default)就表示允许同一个包里的类直接访问类的成员,但是其他包中的类不可以访问。使用protected修饰符允许任何包中的子类或同一包中的类访问类的成员。使用public修饰符允许访问类的成员。

二、protected可见性

  • 同一包中的类(包括子类)可以访问protected修饰的成员
  • 不同包中的类,只有该类的子类能访问该类的protected修饰的成员

特别说明的是,不在同一包中的类(非子类),引用该类的子类的实例,也不能访问该类的protected成员
下面引入代码,分别从子类,和子类的实例的角度,探讨这个结论,代码环境JDK1.8

1.创建三个类Father、Child1SamePack、Child2DiffPack

三个类分别代表:父类,和父类在同一个包中的子类1,和父类不在同一个包中的子类2。

(示例1)Father 父类代码:

package package1;
public class Father {
   
   
    private String privateField;//private修饰的的字段
    String defaultField;//默认修饰字段
    protected String protectedField;//protected修饰的字段
    public String publicField;//public修饰的字段

    protected static String STATIC_FILED;//protected修饰的静态字段

    private void privateMethod() {
   
   }//private修饰的方法

    void defaultMethod() {
   
   }//默认修饰的方法

    protected void proctedMethod() {
   
   }//protected修饰的方法

    public void publicMethod() {
   
   }//public修饰的方法

    protected static void staticMethod() {
   
   }//protected修饰的静态放方法
}

(示例2)Child1SamePack 同包子类代码:
类中标注的“//编译错误,无法引入”,代表在IDE中引入该变量或者是方法报错,未标注的代表编译通过,没有报错,下面的代码示例都是如此

package package1;
public class Child1SamePack extends Father {
   
   

    public String privateFieldChild1 = super.privateField;//编译错误,无法引入
    public String defaultFieldChild1 = super.defaultField;
    public String protectedFieldChild1 = super.protectedField;
    public String publicFieldChild1 = super.publicField;
    public static String staticFieldChild1 = Father.STATIC_FILED;

    public Child1SamePack(){
   
   
        super.privateMethod();//编译错误,无法引入
        super.defaultMethod()
AutoDL上传数据详细步骤(自己用的步骤,可能没有其他大佬用的那么高级) 阅读详情

相关推荐

PCB设计之ODB++文件格式详解

ODB++(Open Database++)是一种广泛应用于PCB(印制电路板)设计和制造领域的开放数据交换格式。它由Valor Computerized Systems(现为Siemens EDA的一部分)开发,旨在替代传统的Gerber文件格式,提供更完整、结构化的制造数据,从而优化PCB设计到生产的流程。ODB++通过结构化数据整合了PCB设计到制造的全流程信息,显著提高了生产效率和准确性。尽管存在一定的兼容性挑战,但其在复杂项目和高可靠性场景中的价值不可替代。

ZZcppc的博客 1万+

嵌入式软考必备知识点:嵌入式系统开发中的重要概念和示例代码

在嵌入式软考中,有一些重要的知识点需要掌握,包括嵌入式系统的基本概念、编程语言、实时操作系统和硬件接口等。实时操作系统是一种专门设计用于嵌入式系统的操作系统,可以提供对任务调度、中断处理和资源管理等方面的支持。GPIO(通用输入输出):GPIO是嵌入式系统中常用的硬件接口,用于连接外部设备和嵌入式系统。以上是嵌入式软考中的一些必备知识点,包括嵌入式系统的基本概念、编程语言、实时操作系统和硬件接口。通过配置串口的波特率、数据位数和校验位等参数,可以实现与其他设备的可靠通信。一、嵌入式系统的基本概念。

PixeGO的博客 313

WCK Operation (WCK 操作)

LPDDR6 SDRAM采用双时钟系统(WCK和CK),其中WCK频率是CK的两倍。为确保数据正确传输,需通过WCK2CK同步操作使两种时钟对齐。LPDDR6支持两种同步模式:Auto-sync off模式和WCK Always on模式,可通过MR22寄存器选择。同步操作由特定命令(Read/Write/MRR等)触发,需在满足特定时序参数(如tWCKENL、tWCKPRE等)后完成。同步前必须完成WCK2CK训练,且不同操作(读取/写入/CAS)有各自的时序要求。该机制确保数据在正确时钟相位下传输,是L

李家小院 650

TC3XX - MCAL知识点(十三):IOM EB-tresos配置说明及代码浅析

输入输出监视器(IOM)驱动程序作为比较单元,检查系统外设输出的正确操作,这些输出可以作为监视功能的输入。监控功能需要通过配置IOM硬件来实现。它向SMU生成全局系统事件。IOM驱动程序初始化并控制微控制器的IOM单元。驱动程序还为用户提供初始化和设置IOM内部单元的阈值的服务。它还应该提供重置IOM内核的服务。应该提供该服务来组合单个或多个本地事件,以生成单个全局系统事件。IOM驱动程序严重依赖于初始化和配置。软硬件关系如下图缩写解释LAM逻辑分析模块ECM事件组合模块FPC。

梦想技术家 1802

【系统分析师】第2章-基础知识:数学与工程基础(核心总结)

数学与工程基础

数据知道的博客 6813

软件设计师---UML

软件设计师---UML

我从不打没有准备的仗! 1万+

基于特征模仿的YOLOv5中间层知识蒸馏:原理、实现与实验全解析

目标检测中的模型轻量化是一个关键挑战。本文提出一种基于特征模仿(Feature Imitation)的YOLOv5中间层知识蒸馏方法,通过让学生模型学习教师模型的中间层特征表示,显著提升轻量级检测器的性能。我们将详细阐述蒸馏损失函数的设计、特征对齐策略、训练流程,并提供完整可运行的代码实现。同时,推荐多个适合蒸馏训练的数据集,并通过实验验证方法的有效性。

YOLO 187

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

紫川有雪
博客等级 码龄10年 2粉丝 1原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值