【八股文】面向对象基础

【八股文】面向对象基础

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

  • 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。
  • 面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。

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

  • new 运算符,new 创建对象实例(对象实例在堆内存中),对象引用指向对象实例(对象引用存放在栈内存中)。

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

  • 对象的相等一般比较的是内存中存放的内容是否相等。
  • 引用相等一般比较的是他们指向的内存地址是否相等。

String str1 = "hello";
String str2 = new String("hello");
String str3 = "hello";
// 使用 == 比较字符串的引用相等
System.out.println(str1 == str2);
System.out.println(str1 == str3);
// 使用 equals 方法比较字符串的相等
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
false
true
true
true
  • == 运算符比较的是字符串的引用是否相等。
  • equals 方法比较的是字符串的内容

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

  • 构造方法是一种特殊的方法,主要作用是完成对象的初始化工作。如果一个类没有声明构造方法,也可以执行!因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。如果我们自己添加了类的构造方法(无论是否有参),Java 就不会添加默认的无参数的构造方法了。我们一直在不知不觉地使用构造方法,这也是为什么我们在创建对象的时候后面要加一个括号(因为要调用无参的构造方法)。如果我们重载了有参的构造方法,记得都要把无参的构造方法也写出来(无论是否用到),因为这可以帮助我们在创建对象的时候少踩坑

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

  • 名字与类名相同。
  • 没有返回值,但不能用 void 声明构造函数。
  • 生成类的对象时自动执行,无需调用。

面向对象三大特征

封装

  • 封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以被外界访问的方法来操作属性。就好像我们看不到挂在墙上的空调的内部的零件信息(也就是属性),但是可以通过遥控器(方法)来控制空调。如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。就好像如果没有空调遥控器,那么我们就无法操控空凋制冷,空调本身就没有意义了(当然现在还有很多其他方法 ,这里只是为了举例子)。

继承

  • 不同类型的对象,相互之间经常有一定数量的共同点。例如,小明同学、小红同学、小李同学,都共享学生的特性(班级、学号等)。同时,每一个对象还定义了额外的特性使得他们与众不同。例如小明的数学比较好,小红的性格惹人喜爱;小李的力气比较大。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承,可以快速地创建新的类,可以提高代码的重用,程序的可维护性,节省大量创建新类的时间 ,提高我们的开发效率

多态

  • 对象类型和引用类型之间具有继承(类)/实现(接口)的关系;
  • 引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定;
  • 多态不能调用“只在子类存在但在父类不存在”的方法;
  • 如果子类重写了父类的方法,真正执行的是子类覆盖的方法,如果子类没有覆盖父类的方法,执行的是父类的方法。

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

  • 都不能被实例化。

  • 都可以包含抽象方法。

  • 都可以有默认实现的方法(Java 8 可以用 default 关键字在接口中定义默认方法)。

  • 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。

  • 抽象类主要用于代码复用,强调的是所属关系。

  • 一个类只能继承一个类,但是可以实现多个接口。

  • 接口中的成员变量只能是 public static final 类型的,不能被修改且必须有初始值,而抽象类的成员变量默认 default,可在子类中被重新定义,也可被重新赋值。

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

  • 浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
  • 深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。
  • 引用拷贝就是两个不同的引用指向同一个对象。

在这里插入图片描述

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

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

相关文章

安达发|APS排产软件的机台产线任务甘特图功能详解

在现代制造业中,高级计划与排产是制造业运营的关键环节。为了提高生产效率、降低成本并确保产品质量,企业需要对生产过程进行精细化管理。APS(高级计划与排产)系统作为一种先进的生产计划和调度工具,可以帮助企业实现这…

过了30岁了,一定要专注一件事情?视频号值得尝试!

经常说视频号下载助手, 但发现大多数的大佬都只是先专注一件事情。 小编初6就回来了,和一个大佬吃饭,虽然人家规模并不大,但日引客户上千也是基本的。 这里给大家揭秘一下,他的做法!!&#x…

3ds Max视频怎么渲染 3ds Max云渲染操作

在3ds Max软件中制作视频动画本质上是逐帧生成画面,并将这些连续帧串联起来创造出动态连贯的视觉效果。常见的视频帧率包括25 FPS(每秒帧数)、60 FPS、以及120 FPS等,帧率的提升可以使视频动画更加流畅。在实质上,视频渲染就是动画渲染&#…

MakerPlace by Michaels:与Etsy一争高下的手工艺品新平台

Michaels是北美规模很大的专业艺术与手工艺品零售商,在加拿大和美国有1290家店。作为一个新的手工艺品在线交易平台——MakerPlace by Michaels 充满无限机遇!所以各位跨境人们也不要错过这个平台,跟着我一起来了解一下吧! MakerP…

探究二维码技术:连接现实与数字世界的桥梁

title: 探究二维码技术:连接现实与数字世界的桥梁 date: 2024/2/19 13:15:36 updated: 2024/2/19 13:15:36 tags: 二维码技术数据编码纠错算法图像处理商业应用安全验证实时交互 引言: 二维码已经成为现代社会中广泛应用的一种技术工具。它不仅在商业领…

牛客网 OR141 密码检查

答案&#xff1a; #include <stdio.h> #include <string.h> #include <ctype.h> int main() {int n 0;int count1 0, count2 0, count3 0;scanf("%d", &n);while (n--){char ch[100];scanf("%s", ch);int len strlen(ch);if (…

基于SSM的在线教学质量评价系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的在线教学质量评价系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spri…

远程办公利器,有哪些远程办公利器好用

远程办公利器&#xff0c;有哪些远程办公利器好用 有的时候需要紧急办公位&#xff0c;但是你的电脑、公司、办公室、酒店、网吧、家里的电脑等极为不方便&#xff0c;这时有远程办公利器就好了。在网上查了下&#xff0c;发下个好用的工具&#xff0c;这里分享下。 1、…

API关键词接口的应用范围说明

一、应用场景 适用商家批发选品&#xff0c;价格监控&#xff0c;品牌监控&#xff0c;实地商家进货 二、公共参数 请求地址: https://api-gw.onebound.cn/1688/item_search 三、请求参数 请求参数&#xff1a;q女装&start_price0&end_price0&page1&cat0&…

UE5 C++ UObject实例化

一.创建UObject C类 在MyObject中声明结构体FMyDataTableStruct 在MyPawn里面&#xff0c;先将头文件里包含 MyObject.h 在MyPawn中声明一个UMyObject类型的指针 TSubclassOf 是提供 UClass 类型安全性的模板类。例如您在创建一个投射物类&#xff0c;允许设计者指定伤害类型…

openai chatGPT 原理通俗介绍

引言 近年来&#xff0c;随着深度学习技术的不断发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域取得了长足的进步。ChatGPT&#xff08;Generative Pre-trained Transformer&#xff09;作为一种先进的语言生成模型&#xff0c;在各类对话系统和智能助手中得到…

Stable Diffusion WebUI 常用命令行参数

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 大家好&#xff0c;我是水滴~~ 本文主要讲解 Stable Diffusion WebUI 的一些常用命令行参数&#xff0c;内容详细的介绍了每一种参数的使用&#xff0c;并配有截图&#xff0c;非常适合初学者…

[规章规划]国家数据局-《关于开展全国数据资源调查的通知》要点解析

去年10月份国家数据局成立以后&#xff0c;各地方省级政府数据局纷纷快速挂牌成立。 仅以2024年1月举例&#xff0c;1月5日&#xff0c;江苏省数据局&#xff08;江苏省政务服务管理办公室&#xff09;挂牌成立&#xff0c;成为国家数据局正式揭牌后&#xff0c;第一个成立的省…

Web3区块链游戏:创造虚拟世界的全新体验

随着区块链技术的不断发展&#xff0c;Web3区块链游戏正逐渐崭露头角&#xff0c;为玩家带来了全新的虚拟世界体验。传统游戏中的中心化结构和封闭经济体系已经被打破&#xff0c;取而代之的是去中心化的游戏环境和真实所有权的数字资产。本文将深入探讨Web3区块链游戏的特点、…

回答一下 Spring Bean 生命周期的执行流程?

一、问题解析 Spring 生命周期全过程大致分为五个阶段&#xff1a;创建前准备阶段、创建实例阶段、依赖注入阶段、容器缓存阶段和销毁实例阶段。 这张是 Spring Bean 生命周期完整流程图&#xff0c;其中对每个阶段的具体操作做了详细介绍&#xff1a; &#xff08;把这张图按…

用冒泡排序实现快速排序(qsort函数),指针进阶实例

目录 1、qsort函数是什么 2、冒泡排序实现指针进阶 2.1 主函数 2.2 功能函数声明​编辑 2.3 my_qsort函数介绍 2.4 Swap函数 总结 1、qsort函数是什么 qsort函数是c语言自带的函数&#xff0c;其功能是实现快速排序。我们来看一下他的参数和返回值&#xff1a; 以上就是q…

springboot+flowable 使用方式

创建flowble制定流程图 登录flowalbe 制定流程图 进入建模器应用程序 创建流程图 分配用户 下载流程图 使用springboot 调用flowable /*** 导入流程图老师流程*/Testvoid startTeacherApprover(){Deployment deploy repositoryService.createDeployment().addClasspathRes…

2024年天津市安全员C证证模拟考试题库及天津市安全员C证理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年天津市安全员C证证模拟考试题库及天津市安全员C证理论考试试题是由安全生产模拟考试一点通提供&#xff0c;天津市安全员C证证模拟考试题库是根据天津市安全员C证最新版教材&#xff0c;天津市安全员C证大纲整理…

linux内核视角看零拷贝

一、什么是零拷贝&#xff1f; 在很多性能优化方案中都有提到零拷贝&#xff0c;零拷贝到底是怎么回事&#xff0c;是真的没有数据的拷贝吗&#xff1f;零拷贝&#xff08;Zero-copy&#xff09;是一种数据传输技术&#xff0c;旨在减少数据在内核态和用户态之间的复制操作。其…

计算机网络概论和数据通信基础

文章目录 计算机网络概论从物理构成上看&#xff0c;计算机网络包括硬件、软件和协议三大部分计算机网络的功能组成计算机网络的分类网络体系结构分层与体系结构接口、协议和服务数据传送单位OSI模型TCP/IP模型 数据通信基础数字信号调制为模拟信号正交振幅调制QAM 模拟数据编码…