Java高频面试之SE-06

news2025/1/2 4:11:35

hello啊,各位老6!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶

访问修饰符 public、private、protected的区别是什么?

在Java中,访问修饰符用于控制类、方法和变量的访问权限。主要的访问修饰符包括 publicprivateprotected,它们分别具有不同的访问级别和使用场景。

1. public

  • 访问权限public 修饰符允许类、方法或变量被任何其他类访问。
  • 使用场景:适合那些需要被广泛访问的类和方法,例如库、API 或公共服务。
  • 示例
    public class MyClass {
        public int myPublicVariable;
    
        public void myPublicMethod() {
            // 任何地方都可以调用这个方法
        }
    }
    

2. private

  • 访问权限private 修饰符限制访问,只允许同一类内的其他成员(变量和方法)访问。
  • 使用场景:适合封装类的内部实现细节,保护数据不被外部直接访问。通常结合 getter 和 setter 方法来提供安全的访问和修改。
  • 示例
    public class MyClass {
        private int myPrivateVariable;
    
        private void myPrivateMethod() {
            // 只能在 MyClass 内部调用
        }
        
        public void setMyPrivateVariable(int value) {
            myPrivateVariable = value; // 通过公共方法访问私有变量
        }
    }
    

3. protected

  • 访问权限protected 修饰符允许同一包内的其他类访问,以及不同包中的子类访问。
  • 使用场景:适合用于继承的情况下,让子类能够访问父类的某些成员,同时又不开放给同一包外的所有类。
  • 示例
    public class MyBaseClass {
        protected int myProtectedVariable;
    
        protected void myProtectedMethod() {
            // 子类和同包其他类可以访问
        }
    }
    
    public class MyDerivedClass extends MyBaseClass {
        public void myMethod() {
            myProtectedVariable = 10; // 子类可以访问
        }
    }
    

总结

  • public:任何地方都可以访问。
  • private:仅允许运行所在的类访问。
  • protected:允许运行所在类、同一包中的类和子类访问。

选择合适的访问修饰符不仅可以提高代码的封装性和安全性,还可以使得代码更加易于理解和维护。

java中this关键字有什么作用?

在Java中,this 关键字是一个特殊的引用,代表当前对象的实例。在类的方法或构造函数中,使用 this 关键字可以明确地指向当前对象的属性和方法。以下是 this 关键字的一些主要作用和使用场景:

1. 区分实例变量和参数

当构造函数或方法的参数与类的实例变量同名时,可以使用 this 来区分它们。this 关键字指向实例变量,而没有 this 前缀的指向的是方法参数。

public class Example {
    private int value;

    public Example(int value) {
        this.value = value; // 使用 this 区分实例变量和构造函数参数
    }
}

2. 调用实例方法

在类的实例方法中,可以使用 this 关键字调用其他实例方法。虽然可以直接调用其他方法,但使用 this 明确地指向当前对象,有助于提高代码可读性。

public class Example {
    public void methodA() {
        System.out.println("Method A");
    }

    public void methodB() {
        this.methodA(); // 使用 this 调用同一类的其他方法
    }
}

3. 传递当前对象

可以使用 this 将当前对象作为参数传递给其他方法或构造函数。

public class Example {
    public void display(Example obj) {
        System.out.println("Displaying object: " + obj);
    }

    public void callDisplay() {
        this.display(this); // 传递当前对象
    }
}

4. 返回当前对象

可以使用 this 在实例方法中返回当前对象,这在实现方法链时非常有用,如在构建器模式中。

public class Builder {
    private String name;

    public Builder setName(String name) {
        this.name = name;
        return this; // 返回当前对象,以便于链式调用
    }
}

5. 在构造函数中调用另一个构造函数

this 关键字可以在一个构造函数中调用另一个构造函数(构造函数重载),以避免代码重复。

public class Example {
    private int value;

    public Example() {
        this(10); // 调用另一个构造函数
    }

    public Example(int value) {
        this.value = value;
    }
}

总结

this 关键字在Java中有助于提高代码的可读性和可维护性,尤其是在处理实例变量、调用方法,以及在构造函数和方法中传递当前对象时。在编写面向对象的程序时,适当地使用 this 可以使代码更加清晰。

IDEA ji huo
https://pan.quark.cn/s/4216736c0427
🎬大全
https://kdocs.cn/l/cqhxNU9I2lLD
12306回家科技
https://pan.quark.cn/s/45f6bf9be1b3
在这里插入图片描述

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

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

相关文章

报表工具DevExpress Reporting v24.2亮点 - AI功能进一步强化

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 报表工具DevExpress Reporting v24.2将于近期发…

每天40分玩转Django:Django表单集

Django表单集 一、知识要点概览表 类别知识点掌握程度要求基础概念FormSet、ModelFormSet深入理解内联表单集InlineFormSet、BaseInlineFormSet熟练应用表单集验证clean方法、验证规则熟练应用自定义配置extra、max_num、can_delete理解应用动态管理JavaScript动态添加/删除表…

MVCC实现原理以及解决脏读、不可重复读、幻读问题

MVCC实现原理以及解决脏读、不可重复读、幻读问题 MVCC是什么?有什么作用?MVCC的实现原理行隐藏的字段undo log日志版本链Read View MVCC在RC下避免脏读MVCC在RC造成不可重复读、丢失修改MVCC在RR下解决不可重复读问题RR下仍然存在幻读的问题 MVCC是什么…

自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator

完成了文本识别和人脸检测的项目后,我发现人脸比对是一个更有趣的一个小技术玩意儿。我决定整一整,也就是对HarmonyOS Next最新版本API 13中的Core Vision Face Comparator API的学习,这项技术能够对人脸进行高精度比对,并给出相似…

代码解析:安卓VHAL的AIDL参考实现

以下内容基于安卓14的VHAL代码。 总体架构 参考实现采用双层架构。上层是 DefaultVehicleHal,实现了 VHAL AIDL 接口,并提供适用于所有硬件设备的通用 VHAL 逻辑。下层是 FakeVehicleHardware,实现了 IVehicleHardware 接口。此类可模拟与实…

通过 Ansys Electronics Desktop 中的高级仿真优化 IC 设计

半导体行业继续通过日益复杂的集成电路 (IC) 设计突破技术界限。随着工艺节点缩小和电路密度达到前所未有的水平,电磁效应对设备性能和可靠性变得越来越重要。现代 IC 设计面临着来自复杂的布局相关耦合机制、信号完整性问题和功率分布问题的挑战,这些问…

Kafka数据迁移全解析:同集群和跨集群

文章目录 一、同集群迁移二、跨集群迁移 Kafka两种迁移场景,分别是同集群数据迁移、跨集群数据迁移。 一、同集群迁移 应用场景: broker 迁移 主要使用的场景是broker 上线,下线,或者扩容等.基于同一套zookeeper的操作。 实践: 将需要新添加…

【OpenGL ES】GLSL基础语法

1 前言 本文将介绍 GLSL 中数据类型、数组、结构体、宏、运算符、向量运算、矩阵运算、函数、流程控制、精度限定符、变量限定符(in、out、inout)、函数参数限定符等内容,另外提供了一个 include 工具,方便多文件管理 glsl 代码&a…

ffmpeg之播放一个yuv视频

播放YUV视频的步骤 初始化SDL库: 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 创建窗口用于显示YUV视频: 目的:…

复习打卡大数据篇——Hadoop MapReduce

目录 1. MapReduce基本介绍 2. MapReduce原理 1. MapReduce基本介绍 什么是MapReduce MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。 MapRed…

小程序配置文件 —— 13 全局配置 - window配置

全局配置 - window配置 这里讲解根目录 app.json 中的 window 字段,window 字段用于设置小程序的状态栏、导航条、标题、窗口背景色; 状态栏:顶部位置,有网络信号、时间信息、电池信息等;导航条:有一个当…

el-pagination 为什么只能展示 10 条数据(element-ui@2.15.13)

好的&#xff0c;我来帮你分析前端为什么只能展示 10 条数据&#xff0c;以及如何解决这个问题。 问题分析&#xff1a; pageSize 的值&#xff1a; 你的 el-pagination 组件中&#xff0c;pageSize 的值被设置为 10&#xff1a;<el-pagination:current-page"current…

单片机与MQTT协议

MQTT 协议简述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布 / 订阅&#xff08;publish/subscribe&#xff09;模式的 “轻量级” 通讯协议&#xff0c;该协议构建于 TCP/IP 协议上&#xf…

Debian-linux运维-docker安装和配置

腾讯云搭建docker官方文档&#xff1a;https://cloud.tencent.com/document/product/213/46000 阿里云安装Docker官方文档&#xff1a;https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker-on-a-linux-ecs-instance 天翼云常见docker源配置指导&#xff1a;htt…

使用Docker-compose部署SpringCloud项目

docker编写dockfile遇到的问题&#xff1a; 需要在docker-compose.yml文件下执行命令 docker-compose.yml文件格式的问题 1和2处空2格&#xff0c;3处空1格&#xff0c;4为本地配置文件目录&#xff0c;5为docker容器的目录&#xff0c;version为自己安装的docker-compose版本 …

KG4Diagnosis 分层多代理的医疗诊断框架,结合大模型与知识图谱构建,覆盖362种常见疾病

KG4Diagnosis 分层多代理的医疗诊断框架&#xff0c;结合大模型与知识图谱构建&#xff0c;覆盖362种常见疾病 论文大纲理解1. 提出背景是什么&#xff1f;2. 概念的性质是什么&#xff1f;是什么导致这个性质&#xff1f;3. 请举一个正例、一个反例&#xff0c;对比4. 请使用类…

【LLM综述】29种大模型Prompt Engineering技术

note 从零样本&#xff08;Zero-shot&#xff09;提示到最新进展的各种提示技术&#xff0c;包括推理和逻辑链&#xff08;Chain-of-Thought, CoT&#xff09;提示、自动链式思考&#xff08;Auto-CoT&#xff09;提示、自我一致性&#xff08;Self-Consistency&#xff09;提…

【黑马头条训练营】day02-黑马头条-App端文章展示

目录 描述app端首页从请求到数据显示的全部流程 描述文章微服务的组成及首页展示业务与实现 自己编写文章微服务关键逻辑 描述app端首页从请求到数据显示的全部流程 浏览器请求我们的app端 会通过nginx请求到我们app前端 app端输入手机号和密码 点击登录 请求 会到我们的…

DBeaver 咋手动配置sqlite 驱动

目录 1 问题2 下载 1 问题 离线安装了DBeaver 数据库软件&#xff0c;现在需要使用这个数据库打开sqlite 数据库&#xff0c;但是提示没有 驱动&#xff0c;那么我们就需要手动下载驱动&#xff0c;在这个软件里面导入 2 下载 https://repo1.maven.org/maven2/org/xerial/sql…

Linux 的历史与发展:从诞生到未来

Linux 的历史与发展&#xff1a;从诞生到未来 1. 起源之前&#xff1a;操作系统的历史背景 在 Linux 问世之前&#xff0c;操作系统的发展经历了多个重要阶段&#xff0c;这些阶段为 Linux 的诞生奠定了基础&#xff1a; 1940-1950 年代&#xff1a;计算机初期 早期计算机如 [[…