Java面试题整理面向对象

一、面向对象的特性有哪些方面

1、抽象:抽象是将一类对象的共同特征总结出来构造成类的过程,包括数据抽象和行为抽象两方面。抽象只关注抽象对象有哪些属性和行为,并不关心这些行为的细节是什么。

2、封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已经定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可以隐藏的东西,只向外界提供最简单的变成接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装好得足够好的,因为几个按键就搞定了所有的事情)。

3、继承:继承从已有的类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java 与模式》或《设计模式精解》中关于桥梁模式的部分)。

4、多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法是为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称之为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)

二、多态的好处

允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。主要有以下优点:

1、可替换性:多态对已存在代码具有可替换性

2、可扩充性:增加新的子类不影响已经存在的类结构

3、接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它实现的。

4、灵活性

5、简化性

三、如何实现多态

实现多态主要有以下三种方式

1、接口实现

2、继承父类重写方法

3、同一类中进行方法重载

四、接口的意义

接口的意义用三个词就可以概括:规范,扩展,回调

五、抽象的依赖

抽象类的意义可以用三句话来概括

为其他子类提供一个公共的类型

封装子类中重复定义的内容

定义抽象方法,子类虽然有不同的实现,但是定义是一致的

六、访问修饰符public、private、protect、不写(default默认)的区别

修饰符当前类同包子类其他包
public
protected×
default××
private×××

七、要实现多态需要的三个必要条件

第一  要有类的继承

第二 要有方法的重写(子类继承父类并重新给父类中已有的或抽象方法)

第三 对象造型(父类的引用指向子类的对象,这样同样的引用调用同样的方法会根据子类对象的不同而表现不同的行为)

八、抽象类和接口的区别

1、抽象类只能被单继承,但是接口可以实现多实现;

2、抽象类中有构造方法,需要对子类访问父类的成员进行初始化,接口中没有构造方法。

3、抽象类中既可以有普通成员变量也可以有普通方法,但是有抽象方法的类必须定义为抽象类;接口中的方法只能定义抽象方法,默认修饰符public abstract。

5、抽象类的抽象方法可以用public、protected和default等修饰,接口只能被public修饰。

九、父类的静态方法能否被子类重新

不能。重写只是用于实例方法,不能用于静态方法,而子类当中含有和父类相同签名的静态方法,我们一般称之为隐藏。

十、什么是不可变对象

不可变对象指对象一旦创建,状态就不可变。

任何修改都会创建一个新的对象,如 String、Integer及其他包装类。

十一、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分

重载(Overload):在同一个类中,方法名称相同,参数列表不同(参数类型,参数个数,参数名称),与返回值无关,称之为重载;

重写(Override):子类中存在与父类中方法声明完全相同的方法,称之为方法重写;

方法重载只与方法名称和参数列表相关,与返回值无关,不能通过返回值类型区分。

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

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

相关文章

idea中导入eclipse项目后没显示src文件

因为没有导入modules 选择import module 选择整个项目 选择eclipse 一直下一步就行 这样就出来了

【挑战开发100个项目 | 1. C语言学生管理系统】

本项目是一个简易的学生信息管理系统,用户可以通过命令行界面完成学生信息的增加、删除、修改、查询、排序和列表展示等功能。数据以txt文件形式存储,实现了数据持久化。项目采用模块化设计,具有较好的可读性和扩展性。适用于初学者学习c语言…

JDK21新特性 有序集合

有序集合 描述常用有序集合体系LinkedHashMapLinkedHashSetLinkedBlockingDequeArrayDeque 三级目录 描述 Java集合体系中,原来就有有序集合实现,但是没有规范支持有序操作的接口。 JDK21 新增了两个接口 SequencedCollection,SequencedMa…

知识图谱:信息抽取简易流程

目录 一、标注训练数据 二、训练数据模型 三、实现NER 一、标注训练数据 使用工具:Brat ## BRAT安装 0、安装条件 (1)运行于Linux系统 (2)brat(v1.3p1)仅支持python2版本运行使用,否则会报错 File "standalone.py", line 257except SystemExit, sts:^Syn…

HTML+VUE+element-ui通过点击不同按钮展现不同页面

完整源码可以私聊我,需要一点点费用~ 页面展示 方案一 方案二 代码解释 方案一:使用v-show 这种方案只适合有两种页面 现在form表单中设置好要展现的页面名(此处的url没有作用不用管) 通过一个两个for循环分别将form表单填入…

PWN环境搭建

虚拟机Ubuntu安装 工具:Vmware 16 以及 Ubuntu 18或20 来源:清华大学开源软件镜像站 | Tsinghua Open Source Mirror 虚拟机安装流程 安装很简单,按照提示一步步来即可 处理器可以多给一些,我给了8个,内核数量不…

004:vue使用relation-graph实现关系图谱

文章目录 1. 效果2. relation-graph简介3. 安装及使用4. 其他更多示例 1. 效果 2. relation-graph简介 这是一个Vue关系图谱组件,可以展示如组织机构图谱、股权架构图谱、集团关系图谱等知识图谱,可提供多种图谱布局,包括树状布局、中心布局…

主要文库网站网赚分析

前言 躺赚的方式有很多,最常见的是文档网站。你上传文档后,等别人来下载,然后你就获得收益。这似乎比开直播,写专栏,赚粉丝更轻松,但实际调研发现,情况没那么简单,真正赚到钱的是少…

安装opensips-03

文章目录 1. 安装opensips1.1 方法一:1.2 方法二: 1. 安装opensips 1.1 方法一: 1 curl https://apt.opensips.org/opensips-org.gpg -o /usr/share/keyrings/opensips-org.gpg 2 echo "deb [signed-by/usr/share/keyrings/opensips-o…

4.一元多项式相乘

题目说明: 要求采用链表形式,求两个一元多项式的乘积:h3 h1*h2。函数原型为:void multiplication( NODE * h1, NODE * h2, NODE * h3 )。 输入: 输入数据为两行,分别表示两个一元多项式。每个一元多项式以…

数论

费马小定理 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv 1 \pmod p ap−1≡1(modp) 其中 p p p 为质数。 欧拉定理 欧拉函数 φ ( i ) \varphi (i) φ(i): 1 1 1 到 i i i 中与 i i i 互质的个数。 a φ ( a ) ≡ 1 ( m o d p ) a^{\varphi(a)} \equiv 1 \pmod…

ChatGPT推出全新功能,引发人工智能合成声音担忧|百能云芯

人工智能AI科技企业OpenAI公司25日宣布,其聊天应用程序ChatGPT如今具备「看、听、说」能力,至少能够理解口语、用合成语音回应并且处理图像;但专家忧心,以假乱真与深度伪造的乱象可能变本加厉。 国家广播公司新闻网(NBC News)报导…

全新UI基于Thinkphp的最新自助打印系统/云打印小程序源码/附教程

这是一款全新的基于Thinkphp的最新自助打印系统,最新UI界面设计的云打印小程序源码,带有简单的教程。 下载地址:https://bbs.csdn.net/topics/617324130

简述ceph文件储存系统

Ceph 是一个统一的分布式存储系统和共享机制,它定义了数据如何存储在一个或多个节点上并呈现给其他机器以供文件访问。 Ceph特点 高性能 a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。 b.考…

WSL2编译安卓11源码,,刷入pixel设备,并使用asfp查看源码

目录 WSL2编译安卓11源码,,刷入pixel设备源码下载驱动下载编译刷机源码导入Android Studio for platformADB调试 WSL2编译安卓11源码,,刷入pixel设备 aosp编译完成后,刷入手机其实非常简单,但是使用wsl有一个问题,就是…

crypto:变异凯撒

题目 下载题目所给的压缩包后解压得到文本提示 由题目名可知为凯撒密码 根据提示格式为flag{},所以猜测前四个字符原文为flag 先来推测一下偏移量 a->f 偏移量为-5,按道理来说每个字符的偏移量都是一样的,但是对照过后发现后面的字符对…

cuda文档链接

tensorrt tensorrt docker release note tensorrt下载页 英伟达官方容器仓库,包括triton,tensorrt,tensorflow等 cuda CUDA C Best Practices Guide GPU Compute Capability Frameworks Support Matrix triton triton docker relea…

Java面向对象高级

文章目录 面向对象高级Object类的常用方法常用方法一(面向对象阶段)** 和 equals 的区别** 关键字native**单例设计模式(Singleton)**前情回顾(学习基础)静态修饰符Static设计模式概念开发步骤**两种实现方…

springboot集成quartz并实现定时任务管理

依赖&#xff1a; <quartz.version>2.3.0</quartz.version><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>${quartz.version}</version><exclusions><exclus…

“的修“报修工单管理系统有哪些功能和作用?

“的修"报修工单管理系统是基于微信平台的&#xff0c;无需下载和安装&#xff0c;只需扫码即可使用。它是一个维保过程管控的理想解决方案&#xff0c;适用于企业、学校、医院、物业等单位需要设备维保的场景。“的修"报修小程序具有独立部署和可控的数据安全性&…