当前位置: 首页 > news >正文

Java基础知识 | 常见面试题(中):面向对象基础

撰写成一问一答的形式,每次回答都默写,对比参考答案后,再默写出更恰当的答案。

 相关内容

Java基础知识 | 常见面试题(上):基础概念和常识

Java基础知识 | 常见面试题(上):基本语法

Java基础知识 | 常见面试题(上):基本数据类型

自测篇

1.1 面向对象和面向过程的区别
1.2 创建一个对象用什么运算符?对象实体与对象引用有何不同?
1.3 对象的相等和引用相等的区别
1.4 类的构造方法的作用是什么?
1.5 如果一个类没有声明构造方法,该程序能正确执行吗?
1.6 构造方法有哪些特点?是否可被 override?
1.7 面向对象三大特征
1.8 接口和抽象类有什么共同点和区别?
1.9 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

答案篇

1.面向对象和面向过程的区别

两者解决问题的方式不同:

面向对象是根据问题先抽象出涉及到的对象,再基于对象去分配任务去实现解决问题。

  • 将事务封装到对象中实现,之后再增加事务只需要创建对象即可。

面向过程则是将问题拆解成几个子问题再依次实现。

举个生活中的例子,餐馆的场景:

面向对象的方式则是创建厨师、服务员和顾客三个对象则能够实现这个场景;

面向过程则是创建顾客进门→服务员拿菜单介绍→顾客点菜下单→厨师做菜→服务员上菜→顾客结账

面向过程则是能够流程化,而面向对象更符合我们的思维思考;

2.创建一个对象用什么运算符?对象实体与对象引用有何不同?

创建对象使用new运算符,创建新的对象实例,并将新的对象引用指向该实例。

对象引用是什么?

  • 对象引用即指向堆内存中实际对象的地址,存储在栈当中。

  • 对象实体即对象的信息和内容,存储在堆当中。

  • 对象实体和对象引用像是绳子与气球,一个对象引用只能指向一个对象实体,而可以有很多个对象引用指向同一个对象实体。

3.对象的相等和引用相等的区别

引用相同通过查看地址是否相同,而对象相等判断的是其内存存放的值和属性是否相同。

4.类的构造方法的作用是什么?

类的构造方法便于在调用对象时直接赋值初始化,其中无参构造器能够保证即使无赋值初始化也不会报错;

5.如果一个类没有声明构造方法,该程序能正确执行吗?

能正常运行,因为在Java机制中当没有创建构造器时,其会默认创建无参构造器;

若创建构造器后,则必须创建无参构造成;

因为在创建引用类型时,new对象后加上的()调用的就是无参构造器,不创建很容易报错。

6.构造方法有哪些特点?是否可被 override?

构造方法方法名与类相同,无返回类型和返回值;

能够撰写参数列表,重载:创建多个构造方法必须参数列表不同,不能被override覆盖/重写;

但能够直接调用在创建对象时自动执行相应构造器方法,无需调用;

7.面向对象三大特征

面向对象三大特征为封装、继承和多态;

封装

  • 能够将常用的方法构建好后便于下次使用时直接调用相应的包即可;

  • 封装相当于黑盒,但同时必须提供相应的访问方法。

    • 每个类相对于一个对象,将该对象需要解决的功能实现封装,并且提供外部相应访问的方法。

    • 防止外部直接方法内部信息,同时必须提供给外部能够访问的途径,因为类的创建就是为了便于使用。

    • 就像使用电脑,我们无需知道里面的集成电路如何构建,只需要会使用键盘和鼠标即可操作计算机;

继承:代码复用性和可维护性

  • 在已经封装好的类的实现功能上再完善or增加相应的功能。

  • 但需要注意的是继承的是父类全部的方法;

  • 注意事项

    • 子类只是拥有父类的方法,即对于父类的私有方法只能访问而不能再其基础上修改。

    • 子类能够继承父类方法并拓展自己方法;

    • 子类可以用自己的方式实现父类的方法(不懂后期待补)。

多态:

  • 同种方法根据调用的对象不同而产生不同的结果,使用父类创建对象,使用父类的引用来引用子类的对象。

  • 对象类型和引用类型间必须是继承关系;

  • 只能够调用“父类和子类”都存在的方法;在运行时才能确定调用的是哪个类的方法;

  • 当子类覆盖父类方法时,则调用的是指向子类对象的方法,若该子类未覆盖父类方法,则调用的是父类的方法

8.接口和抽象类有什么共同点和区别?

接口出现的目的是为了定义规范,必须实现某些功能才能被认为符合某类范式。

抽象类则是为了将具象化事物抽象出来,便于按照指定特征去实现,就像动物抽象类,狗和猫都能实现其基础功能,并且在该基础上实现其各自特点,相当于是参考模板。

接口和抽象类的共同点:

  • 继承子类必须实现其所有方法;

  • 且接口和抽象类都不能实例化;

接口

抽象类

子类必须实现

子类必须实现

继承机制不同

能够多接口

只能继承一个抽象类

对类进行约束,实现相应行为

目的是复用,关注所属关系

语法不同

Inference

Abstract

修饰符要求不同

public、static或final修饰

默认为default

不能被修改,且必须有初始值

可被重新定义or重新赋值。

9.深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

浅拷贝只是创建新的对象引用到相同对象实体中,而深拷贝则是将对象实体(信息和内容)和对象引用都复制一遍

引用拷贝则是直接引用对象,与原对象共用对象引用和对象实体;

  • 浅拷贝的对象与原对象不同,但调用的内容是相同共用的;

问题和理解大部分来源为Guide哥的Java面试指南,有需要的可自行检索加入其星球获得。 

相关文章:

Java基础知识 | 常见面试题(中):面向对象基础

撰写成一问一答的形式,每次回答都默写,对比参考答案后,再默写出更恰当的答案。 相关内容 Java基础知识 | 常见面试题(上):基础概念和常识 Java基础知识 | 常见面试题(上)&#xff1a…...

勒索软件正在从 Windows 转向 Linux

听说勒索软件正在从 Windows 转向 Linux了勒索软件正在从 Windows 转向 Linux 最近几周,黑客们一直在对 Linux 企业网络部署 IceFire 勒索软件,这是一个值得注意的转变,因为它曾经是一个只针对 Windows 的恶意软件。与 Windows 相比&#xf…...

信息系统项目管理师 第11章 项目成本管理

1.管理基础 1.重要性和意义 项目管理主要受范围、时间、成本、质量的约束,项目成本管理就是要确保在批准的预算内完成项目。 如果项目建设的实际成本远远超出批准的投资预算,就很容易造成成本失控。 1.对工程项目认识不足。 2.组织制度不健全。 3.方法问题 4.技术的制约 5.需…...

XML 简介

文章目录一、XML 简介二、XML 用途总结一、XML 简介 XML 被设计用来传输和存储数据。 HTML 被设计用来显示数据。 XML 指可扩展标记语言(eXtensible Markup Language)。 可扩展标记语言(英语:Extensible Markup Language&#xf…...

ERP:华为杀入,金蝶们打颤?

配图来自Canva可画 近期,华为官方透露将在4月份推出自研MetaERP管理系统,引来不少媒体和业内人士的围观,紧接着关于华为“进军ERP市场”的解读更是不胫而走,所谓一石激起千层浪,此说法一出,直接导致了金蝶…...

Linux——总复习1

1.要注意自己处于当前那个目录位置。 2.将file1的前五行/后三行重定向、附加到file2【输出重定向】 head -5 file1 > file2 tail -3 file1 >> file2 3.ls与cat区别 ls:列出目录的目录内容,未指定目录,则列出当前工作目录的内容 -l:查…...

控制SQL*PLUS的环境和数据字典简介

可以通过使用SET命令来设置SQL*PLUS的环境变量,从而达到控制SQL*PLUS 环境的目的。 SET命令的格式如下: SET 环境变量 变量的值 可以通过使用SHOW命令来显示SQL*PLUS环境变量的配置。SHOW 命令的格式如下: SHOW 环境变量|ALL 下面用一个…...

Chapter11.3:MATLAB_SIMULINK在离散系统中的应用

该系列博客主要讲述Matlab软件在自动控制方面的应用,如无自动控制理论基础,请先学习自动控制系列博文,该系列博客不再详细讲解自动控制理论知识。 自动控制理论基础相关链接:https://blog.csdn.net/qq_39032096/category_10287468…...

过滤器Filter

什么是Filter? Filter表示过滤器,是JavaWeb三大组件(Servlet、FIlter、Listener)之一。过滤器可以把对资源的请求拦截下来,总而实现一些特殊的功能 使用过滤器后,要想访问web服务器上的资源,必须…...

MySQL数据同步ES的常用思路和方法

文章目录 1.同步双写2.异步双写3.定时任务4.数据订阅大家应该都在各种电商网站检索过商品,检索商品一般都是通过什么实现呢?搜索引擎Elasticsearch。 那么问题来了,商品上架,数据一般写入到MySQL的数据库中,那么用于检索的数据又是怎么同步到Elasticsearch的呢? 1.同步双…...

spring源码之扫描前设置

扫描前设置 &#x1f6f9;源码源码说明总结启动一个springboot项目源码 org.springframework.context.annotation.ComponentScanAnnotationParser#parse public Set<BeanDefinitionHolder> parse(AnnotationAttributes componentScan, String declaringClass) {// 创建C…...

C++ 98/03 应该学习哪些知识19

迭代器、空间配置器理解 在 C 中&#xff0c;迭代器是一种可以用来遍历容器中的元素的对象。它们提供了一个类似于指针的接口&#xff0c;允许我们访问容器中的元素&#xff0c;而不必了解容器内部的结构。迭代器是 STL&#xff08;标准模板库&#xff09;的核心部分&#xff0…...

java毕业生就业信息管理系统servlet程序

1&#xff0e;系统登录&#xff1a;系统登录是用户访问系统的路口&#xff0c;设计了系统登录界面&#xff0c;包括用户名、密码和验证码&#xff0c;然后对登录进来的用户判断身份信息&#xff0c;判断是管理员用户还是普通用户。 2&#xff0e;系统用户管理&#xff1a;不管是…...

linux命令-netstat

linux命令-netstat 查看Linux中网络系统状态信息 补充说明 netstat命令 用来打印Linux中网络系统的状态信息&#xff0c;可让你得知整个Linux系统的网络情况。 语法 netstat(选项)选项 -a或--all&#xff1a;显示所有连线中的Socket&#xff1b; -A<网络类型>或--&…...

微服务+springcloud+springcloud alibaba学习笔记【Rest微服务工程搭建】(2/9)

Rest微服务工程搭建---学习笔记2/91、简单架构示意图2、创建Cloud-provider-payment8001 微服务提供者Module模块2.1. 建Module2.2. 改pom2.3. 写yml2.4. 主启动2.5. 业务类3、创建Cloud-consumer-order80 微服务消费者订单Module模块3.1. 建Module3.2. 改pom3.3. 写yml3.4. 主…...

【Redis7】Redis7 十大数据类型

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍Redis7 十大数据类型。 后续会继续分享Redis7和其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下吧】 上一篇文章&#xff1a;《【Redis7】Redis7概述、安装…...

java 死锁怎么解决, 盘它

死锁归根结底还是资源的安排有问题如何使用 jps jstack,解决死锁如果是在分布式的系统中, 我该如何一步一步找到对应的堆栈解决死锁问题呢如何利用 skywalking 帮我解决死锁大多数人一辈子只做了三件事&#xff0c;自欺欺人被人欺 如何使用 jps jstack,解决死锁 jps和jstack都…...

【新2023Q2押题JAVA】华为OD机试 - 服务依赖

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:服务依赖 题目 在某系统中有…...

交友项目【通用设置】三个功能实现

目录 1&#xff1a;交友项目【通用设置】 1.1&#xff1a;查询通用设置 1.1.1&#xff1a;接口地址 1.1.2&#xff1a;流程分析 1.1.3&#xff1a;代码实现 1.2&#xff1a;设置陌生人问题 1.2.1&#xff1a;接口地址 1.2.2&#xff1a;流程分析 1.2.3&#xff1a;代码…...

MongoDB 更新文档(更新多条文档)

上一篇我们介绍了如何更新一条文档&#xff0c;本篇我们介绍一下&#xff0c;如果更新多条文档&#xff0c;我们来回顾一下更新多条文档的语法&#xff1a; db.collection.updateMany(filter, update, options) 上一篇我们对语法中的参数及参数的语法进行了详细的介绍&#xf…...

效率飙升:借助快马平台生成全自动OpenClaw本地部署一体化工具

最近在折腾OpenClaw的本地部署时&#xff0c;发现传统方式实在太费时间了。每次都要手动查文档、拼命令、调环境&#xff0c;经常卡在某个依赖项版本冲突上。后来尝试用InsCode(快马)平台生成了一体化部署工具&#xff0c;效率直接翻倍。这里分享下具体实现思路和优化点&#x…...

掌握 AgentScope 与 Spring AI Alibaba:大模型多智能体实践指南(收藏版)

本文深入探讨了 AgentScope 与 Spring AI Alibaba 在大模型应用中的多智能体实践。从单智能体优先原则出发&#xff0c;详细解析了 Pipeline、Routing、Skills、Subagents、Supervisor、Handoffs 及 Custom Workflow 等多种多智能体模式&#xff0c;并提供了实用的架构选型指南…...

从零搭建AI办公助手:OpenClaw+百川2-13B-4bits七日实践计划

从零搭建AI办公助手&#xff1a;OpenClaw百川2-13B-4bits七日实践计划 1. 为什么选择这个组合&#xff1f; 去年冬天&#xff0c;当我第一次听说OpenClaw这个开源自动化框架时&#xff0c;内心是充满怀疑的。作为一个长期被各种"智能助手"忽悠的技术从业者&#xf…...

JeecgBoot低代码开发平台终极实战指南:从零开始构建企业级应用

JeecgBoot低代码开发平台终极实战指南&#xff1a;从零开始构建企业级应用 【免费下载链接】jeecg-boot jeecgboot/jeecg-boot 是一个基于 Spring Boot 的 Java 框架&#xff0c;用于快速开发企业级应用。适合在 Java 应用开发中使用&#xff0c;提高开发效率和代码质量。特点是…...

ThinkPad装Win10企业版后,手把手教你用PowerShell搞定Lenovo Vantage(附依赖包下载)

ThinkPad安装Win10企业版后手动部署Lenovo Vantage的完整指南 当你在ThinkPad上安装了纯净的Windows 10企业版系统后&#xff0c;可能会发现无法通过常规方式安装Lenovo Vantage这款官方管理工具。本文将详细介绍如何通过PowerShell命令手动安装Lenovo Vantage及其所有必需的依…...

OpenClaw多模态扩展:为nanobot添加图像识别能力

OpenClaw多模态扩展&#xff1a;为nanobot添加图像识别能力 1. 为什么需要图像识别能力 去年夏天&#xff0c;我接手了一个自动化内容审核的小项目。最初只是用OpenClaw处理文本内容&#xff0c;但很快发现一个致命缺陷——当需要审核带图片的帖子时&#xff0c;我的机器人就…...

企业生产环境怎么正确做 Vibe Coding:不是让 AI 接管,而是把交付流程做成可控系统

这两年&#xff0c;vibe coding 很热。很多团队第一次接触它时&#xff0c;直觉都是&#xff1a;既然 AI 会写代码&#xff0c;那就让它多写一点&#xff0c;人少管一点&#xff0c;速度自然就上来了。 但一进企业生产环境&#xff0c;这种想法通常很快撞墙。 因为企业真正关心…...

5分钟搞定!Fun-ASR-MLT-Nano-2512多语言语音识别一键部署指南

5分钟搞定&#xff01;Fun-ASR-MLT-Nano-2512多语言语音识别一键部署指南 1. 快速了解Fun-ASR-MLT-Nano-2512 Fun-ASR-MLT-Nano-2512是阿里通义实验室推出的轻量级多语言语音识别模型&#xff0c;特别适合需要本地化部署的场景。这个800M参数的模型虽然小巧&#xff0c;但功能…...

ARM嵌入式开发:寄存器操作与函数指针实战

## 1. 嵌入式开发中的寄存器操作技巧### 1.1 寄存器地址访问方法 在ARM架构嵌入式开发中&#xff0c;直接操作硬件寄存器是底层开发的核心技能。通过C语言访问特定内存地址的标准做法是使用指针类型转换&#xff1a;c #define GSTATUS1 (*(volatile unsigned int *)0x560000B0)…...

SDMatte在内容制作中的应用:短视频封面透明底素材、PPT动态图源快速生成

SDMatte在内容制作中的应用&#xff1a;短视频封面透明底素材、PPT动态图源快速生成 1. 为什么你需要专业的AI抠图工具 在内容创作领域&#xff0c;时间就是金钱。无论是制作短视频封面&#xff0c;还是设计PPT演示文稿&#xff0c;抠图都是最耗时的环节之一。传统Photoshop抠…...