2024年150道高频Java面试题(十)

19. 解释一下 Java 中的封装、继承和多态。

封装、继承和多态是面向对象编程(OOP)的三个核心概念,在Java中得到了广泛应用。

  1. 封装

    • 概念:封装是指隐藏一个对象的内部细节,仅对外暴露需要公开的部分。这可以通过访问修饰符(如private, protected, public)来实现。

    • 目的:确保对象的安全性,防止外部直接访问对象内部数据,提高代码的模块性和可维护性。

    • 示例

      public class Person {private String name; // 私有属性,外部不能直接访问// 对外提供的公共方法来访问私有属性public String getName() {return name;}public void setName(String name) {this.name = name;}
      }
      
  2. 继承

    • 概念:继承是允许子类(派生类)继承父类(基类)的属性和行为的过程。子类可以添加新的属性和行为,也可以重写父类的方法。

    • 目的:实现代码复用,减少冗余代码。

    • 示例

      class Animal {void makeSound() {System.out.println("Animal makes a sound");}
      }class Dog extends Animal {// Dog类继承自Animal类void makeSound() {System.out.println("The dog barks");}
      }
      
  3. 多态

    • 概念:多态是指允许不同类的对象对同一消息做出响应的能力。在Java中,多态通常通过接口和继承实现。

    • 类型

      • 编译时多态(方法重载)
      • 运行时多态(方法重写)
    • 目的:提供了一种接口,让代码可以对新的子类类型透明,增强了程序的可扩展性和灵活性。

    • 示例

      class Bird {void makeSound() {System.out.println("Bird makes a sound");}
      }class Sparrow extends Bird {void makeSound() {System.out.println("Sparrow chirps");}
      }public class Test {public static void main(String[] args) {Bird myBird = new Sparrow(); // Sparrow对象被当作Bird类型处理myBird.makeSound(); // 输出 "Sparrow chirps"}
      }
      

以上就是封装、继承和多态的简要解释和代码示例。它们是面向对象编程的基石,对于设计和实现模块化、可维护、可扩展的软件系统至关重要。

20. Java 中的访问修饰符有哪些?它们之间的区别是什么?

Java 中有四个访问修饰符,它们用于控制类成员(字段、方法、构造函数和嵌套类)的访问级别。以下是这些访问修饰符以及它们之间的区别:

  1. private:这是限制性最强的访问修饰符。被声明为 private 的成员只能在声明它们的类内部被访问。

    • 示例:

      public class MyClass {private int privateField;private void privateMethod() {// 可以访问 privateField 和其他 private 方法}
      }
      
  2. default(默认):如果一个成员没有指定任何访问修饰符,则它有一个默认的访问级别,也称为包私有(package-private)。这意味着它可以被同一个包内的任何其他类访问,但不可被该包之外的类访问。

    • 示例:

      class MyClass {// 默认访问修饰符,没有关键字int defaultField;void defaultMethod() {// 可以被同一包的其他类访问}
      }
      
  3. protected:受保护的成员可以在声明它们的类的子类中访问,也可以被同一包内的所有其他类访问。

    • 示例:

      public class ParentClass {protected int protectedField;protected void protectedMethod() {// 可被子类访问}
      }class ChildClass extends ParentClass {void method() {// 可以访问父类的 protectedField 和 protectedMethod}
      }
      
  4. public:这是限制性最弱的访问修饰符。被声明为 public 的成员可以从任何地方访问,没有任何限制。

    • 示例:

      public class MyClass {public int publicField;public void publicMethod() {// 可以被任何其他类访问}
      }
      

以下是这些访问修饰符之间区别的表格形式总结:

访问修饰符同类同包子类不同包
privateYNNN
defaultYYNN
protectedYYYN
publicYYYY

不同的访问修饰符提供了不同级别的封装,允许开发者精确控制代码的哪些部分是可见的,哪些是隐藏的。这是面向对象编程中一个重要的概念,有助于提高代码的安全性和可维护性。

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

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

相关文章

Capture One Pro 23中文---颠覆性的图像编辑与色彩配置

Capture One Pro 23是一款功能强大且专业的RAW图像编辑处理软件。它拥有全球领先的色彩管理技术和精细的图像编辑工具,可以对图片进行多种精细调整,包括曝光、色温、对比度、锐度等,以满足用户特定的后期处理需求。此外,Capture O…

第二百三十一回

文章目录 1. 概念介绍2. 符号和平台2.1 符号2.2 平台 3. 问题与解决3.1 常见问题3.2 解决方法 4.内容总结 我们在上一章回中介绍了"关于intl报错的问题"相关的内容,本章回中将介绍不同平台上换行的问题.闲话休提,让我们一起Talk Flutter吧。 1…

Excel函数-总

目录 1.概述 2.数组公式 2.1.数组的类别 2.2.数组的构成元素 2.3.数组运算时需要用到的运算符 3.数学与三角函数 3.1.RANDBETWEEN 3.2.ABS 3.3.MOD 3.4.PI ​​​​​​​3.5.PRODUCT ​​​​​​​3.6.RADIANS ​​​​​​​3.7.DEGREES ​​​​​​​3.8.POWER ​​​​​…

FastAPI+React全栈开发17 让我们创建一个React应用

Chapter04 Setting Up a React Workflow 17 Let’s Create a React App FastAPIReact全栈开发17 让我们创建一个React应用 As I mentioned earlier, create-react-app takes away much of the heavy work when starting a project, and we will be using it throughout this…

Python中对象的创建于使用

创建对象 在Python中,创建对象是通过实例化类来完成的。一个类是一个包含属性和方法的蓝图,它定义了一种对象的行为和特征。我们可以使用class关键字来定义一个类,然后使用类的名称和括号来实例化对象。 以下是一个创建对象的例子&#xff…

使用Docker搭建Sonarr

Sonarr是一款用于自动化管理电视节目的开源应用程序。它能够根据用户设定的规则自动搜索、下载并整理电视剧集,支持多用户、多队列管理,并且可以与下载客户端如SABnzbd、NZBGet等集成,以及与媒体服务器如Plex、Emby等配合使用,为用…

【3】3道链表力扣题:删除链表中的节点、反转链表、判断一个链表是否有环

3道链表力扣题 一、删除链表中的节点🌏 题目链接📕 示例🍀 分析💻 代码 二、反转链表🌏 题目链接📕 示例🍀 分析① 递归② 迭代 三、判断一个链表是否有环🌏 题目链接📕 …

ES6 模块化操作

ES6模块化主要有两个操作&#xff1a;import 和 export 如果在html文件的script中引用模块的话&#xff0c;要设置<script type"module"> 一种导入导出方法&#xff1a; a.js//分别暴露 export let num 1 export function compute(a, b){return a b }//统…

C++中使用虚函数实现多态

虚函数是C中用于实现多态&#xff08;Polymorphism&#xff09;的重要特性。下面是关于虚函数的讲解和代码示例&#xff1a;### 虚函数的定义&#xff1a; 虚函数是在基类中声明为 virtual 的成员函数。 在派生类中重写&#xff08;override&#xff09;这个虚函数&#xff0c;…

数据结构与算法 循环双链表基本运算与对称算法

一、实验内容 1、实现循环双链表的各种基本运算的算法 &#xff08;1&#xff09;初始化循环双链表h &#xff08;2&#xff09;依次采用尾插法插入a,b,c,d,e元素 &#xff08;3&#xff09;输出循环双链表h&#xff1b; &#xff08;4&#xff09;输出循环双链表h长度&am…

物联网学习1、什么是 MQTT?

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级、基于发布-订阅模式的消息传输协议&#xff0c;适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎&#xff0c;能够实现传感器、执行器和其它设备之间的高效通…

HSP_04章_扩展: 进制、位运算

文章目录 10. 扩展: 进制11. 位运算11.1 二进制在运算中的说明11.2 原码 反码 补码11.3位运算符11.3.1 ~按位取反11.3.2 &按位与11.3.3 ^按位异或11.3.4 |按位或11.3.5 << 左移11.3.6 >> 右移 10. 扩展: 进制 进制介绍 进制的转换 2.1 其他进制转十进制 二进…

面试八股——redis——集群

0. redis集群的方案 1.主从复制&#xff08;高并发读&#xff09; 一个主节点负责写操作&#xff08;增删改&#xff09;&#xff0c;多个从节点负责查操作。 主从复制是让主节点修改数据之后&#xff0c;将对应数据同步到从节点中。 2.哨兵模式&#xff08;实现高可用&#x…

Redis命令请求的执行过程(一)

命令请求的执行过程 概述 一个命令请求从发送到获得回复的过程中&#xff0c;客户端和服务器需要完成一系列操作。 例子 举个例子。如果我们使用客户端执行以下命令: 127.0.0.1:6379> SET KEY VALUE OK那么客户端发送SET KEY VALUE命令到获得回复OK期间&#xff0c;客户…

图片标注编辑平台搭建系列教程(6)——fabric渲染原理

原理 fabric的渲染步骤大致如下&#xff1a; 渲染前都设置背景图然后调用ctx.save()&#xff0c;存储画布的绘制状态参数然后调用每个object自身的渲染方法最后调用ctx.restore()&#xff0c;恢复画布的保存状态后处理&#xff0c;例如控制框的渲染等 值得注意的是&#xff0…

精品丨PowerBI负载测试和容量规划

当选择Power BI作为业务报表平台时&#xff0c;如何判断许可证的选择是否符合业务需求&#xff0c;价格占了主导因素。 Power BI的定价是基于SKU和服务器内核决定的&#xff0c;但是很多IT的负责人都不确定自己公司业务具体需要多少。 不幸的是&#xff0c;Power BI的容量和预期…

54 npm run serve 和 npm run build 输出的关联和差异

前言 通常来说 我们开发的时候一般会用到的命令是 “npm run serve”, “npm run build” 前者会编译当前项目, 然后将编译之后的结果以 node 的形式启动一个服务, 暴露相关业务资源, 因此 我们可以通过 该服务访问到当前项目 后者是编译当前项目, 然后做一下最小化代码的优…

第六讲 B+树索引

1 B树大家庭 有一种称为 B 树的特定数据结构&#xff0c;人们还使用该术语来泛指一类平衡树数据结构&#xff1a; B-Tree (1971)BTree (1973)B*Tree (1977?)B link-Tree (1981)Bε-Tree (2003)Bw-Tree (2013) 2 B树 BTree 是一种自平衡【self-balance】、有序【ordered】的…

文生图大模型Stable Diffusion的前世今生!

1、引言 跨模态大模型是指能够在不同感官模态(如视觉、语言、音频等)之间进行信息转换的大规模语言模型。当前图文跨模态大模型主要有&#xff1a; 文生图大模型&#xff1a;如 Stable Diffusion系列、DALL-E系列、Imagen等 图文匹配大模型&#xff1a;如CLIP、Chinese CLIP、…

LeetCode Python - 84. 柱状图中最大的矩形

目录 题目描述解法方法一方法二 运行结果方法一方法二 题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights …