Java高频面试之SE-06

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
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pymysql中的问题

首先像代码所示: 正确输出了mysql版本,但是,在pycharm链接mysql成功后创建表时又出现报错内容: Traceback (most recent call last): File "D:\PycharmProjects\PythonProject0\pymysqllearning.py", line 13, in &…

VuePress搭建个人博客

VuePress搭建个人博客 官网地址: https://v2.vuepress.vuejs.org/zh/ 相关链接: https://theme-hope.vuejs.press/zh/get-started/ 快速上手 pnpm create vuepress vuepress-starter# 选择简体中文、pnpm等, 具体如下 .../19347d7670a-1fd8 | 69 .../19…

【DC简介--Part1】

DC简介-Part1 1 overview1.1 DC操作步骤1.2 Steps1.2.1 Develop HDL files1.2.2 Specify libraries1.2.3 Read design1.2.4 Define design environment1.2.5 Set design constraints1.2.6 Select compile strategy1.2.7 Synthesize and optimize the design1.2.8 Analyze and r…

【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor

IJob&#xff1a;开启单个线程进行计算&#xff0c;线程内不允许对同一个数据进行操作&#xff0c;也就是如果你想用多个IJob分别计算&#xff0c;将其结果存储到同一个NativeArray<int>数组是不允许的&#xff0c;所以不要这样做&#xff0c;如下例子就是反面教材&#…

HCIA-Access V2.5_7_1_XG(S)原理_系统概述

近年来&#xff0c;随着全球范围内接入市场的飞快发展以及全业务运营的快速开展&#xff0c;已有的PON技术标准在带宽需求&#xff0c;业务支撑能力以及接入节点设备和配套设备的性能提升等方面都面临新的升级需求&#xff0c;而GPON已经向10G GPON演示&#xff0c;本章将介绍1…

imgproxy图像处理的高效与安全

摘要 imgproxy作为一个高效且安全的独立服务器,为图像处理提供了全新的解决方案。它不仅简化了图像调整和转换的过程,还极大地提升了处理速度,确保了整个流程的安全性。通过集成imgproxy,用户可以轻松优化网页上的图像,提高加载速度,改善用户体验。本文将深入探讨imgpro…

CPT203 Software Engineering 软件工程 Pt.4 软件设计(中英双语)

文章目录 6. 设计概念6.1 Principle6.2 Concepts6.2.1 General design concepts&#xff08;常见的设计概念&#xff09;6.2.1.1 Abstraction&#xff08;抽象&#xff09;6.2.1.2 Modularity&#xff08;模块化&#xff09;6.2.1.3 Functional independence&#xff08;功能独…

MultiDiff 论文解读

一、CameraCtrl AnimateDiff->MotionCtrl->CameraCtrl CameraCtrl将多帧图像的Plucker射线输入到Camera Encoder&#xff0c;Plucker射线可以表示每个像素对应的光线方向。 Camera Encoder包括ResNet block和Temporal Attention&#xff0c;来提取每一帧相机位姿的时序…

OpenCV-Python实战(4)——图像处理基础知识

一、坐标 在 OpenCV 中图像左上角坐标为&#xff08;0&#xff0c;0&#xff09;&#xff0c;竖直向下为 Y&#xff08;height&#xff09; &#xff1b;水平向右为 X&#xff08;width&#xff09;。 二、生成图像 2.1 灰度图像 img np.zeros((h,w), dtype np.uint8) i…

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源&#xff0c;请执行以下操作&#xff1a; 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录&#xff08;例如&#xff0c;深色 UI 主题或本地化字符串的不同图像&#xff09;。 依赖项和目录设置 要访问多平台项目中的资源…

html转PDF

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在项目中会有一些需要页面转成PDF的情况&#xff0c;这里需要配合一些插件可以完成 使用html2canvas将使用canvas将页面转为base64图片流&#xff0c;并插入jspdf插件中&#xff0c;保存并下载pdf。…

32132132123

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

微服务保护-sentinel

为什么要有微服务保护&#xff1f; 微服务保护是为了避免微服务雪崩而出现的&#xff0c;每个微服务能处理的请求是有限的&#xff0c;如果一个微服务出现问题导致一个请求进入微服务的时间太久&#xff0c;就会导致大量去请求停滞在微服务内部&#xff0c;这样就会过分占用系统…

深入浅出 MyBatis | CRUD 操作、配置解析

3、CRUD 3.1 namespace namespace 中的包名要和 Dao/Mapper 接口的包名一致&#xff01; 比如将 UserDao 改名为 UserMapper 运行发现抱错&#xff0c;这是因为 UserMapper.xml 中没有同步更改 namespace 成功运行 给出 UserMapper 中的所有接口&#xff0c;接下来一一对…

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

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

【Java基础-29】深入理解Java中的super关键字:用法、场景与最佳实践

在Java编程中&#xff0c;super关键字是一个非常重要的概念&#xff0c;尤其在继承和多态的上下文中。它用于访问父类的成员&#xff08;属性、方法或构造函数&#xff09;&#xff0c;帮助开发者在子类中更好地管理和扩展父类的功能。本文将深入探讨super关键字的用法、适用场…

linux-软硬链接

我们今天再来聊一下这个"软硬链接"的问题. 目录 1. 软硬链接长什么样?2. 软连接和硬链接的特征 和 应用2.1 软连接特征 及其 应用?①软连接是什么?②软连接的应用1: 快捷方式③软连接的应用2: 方便维护库文件 2.2 硬连接特征 及其 应用?①硬链接是什么?②引用计…

学习threejs,THREE.CircleGeometry 二维平面圆形几何体

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.CircleGeometry 圆形…

ISO/IEC 25012:2008 系统和软件的质量模型(数据质量模型)

本文是对GBT 25000.12-2017《软件产品系统与软件质量要求与评价&#xff08;SQuaRE&#xff09;第12部分&#xff1a;数据质量模型》一文的转载&#xff0c;此外还参考了ISO/IEC 25012:2008(en) Software engineering — Software product Quality Requirements and Evaluation…