java面试-java基础(中)

文章目录

  • 一、面向对象OOP和面向过程OPP区别?
  • 二、面向对象有哪些特性?
  • 三、重载和重写区别?
  • 四、private,default,protected,public访问控制符范围
  • 五、抽象类和接口有什么区别?如何选用?
  • 六、this关键字有什么作用?
  • 七、final、finally、finalize区别?
  • 总结


一、面向对象OOP和面向过程OPP区别?

  • 面向对象:将问题中遇到的实物抽象和分类成一个个的类,并用通过创建一个个对象去解决现实中的问题
  • 面向过程:将问题分成多个步骤,将每个步骤写成一个个函数,并通过顺序调用解决现实中的问题
  • 区别
    • 关注点不同:面向对象关注现实世界中的对象及其关系,而面向过程关注解决问题的步骤和过程。
    • 数据和函数的关系不同:在面向对象中,数据和操作数据的方法被封装在对象中,而在面向过程中,数据和函数是分离的
    • 代码组织方式不同:面向对象通过类和对象来组织代码,具有更好的模块化和可重用性;而面向过程通常按照功能或步骤来组织代码,可能导致代码结构混乱
    • 扩展性和可维护性不同:面向对象通过封装、继承和多态等特性提高了代码的扩展性和可维护性;而面向过程在这方面表现相对较差

二、面向对象有哪些特性?

  • 封装:把对象的属性私有化,同时提供可以被外界访问的属性的方法.代码复用、安全性高
  • 继承: 以已存在的类的定义作为基础建立新类。新类的定义可以增加新的属性或新的方法,也可以继承父类的属性和方法。通过继承可以很方便地进行代码复用,扩展性强,但耦合度增强
    • 一个类只能继承一个类,所有的类都直接或者间接的继承了Object类
    • 子类自动拥有父类所有有属性和方法,但只能访问父类非私有属性和方法
    • 默认访问子类的[同名]成员变量/方法,不存在则访问父类非私有[同名]成员变量/方法。即使在父类构造方法中调用也能自动调子类方法
  • 多态:指程序中定义的引⽤变量所指向的具体类型和通过该引⽤变量调用的⽅法在编程时并不确定,⽽是在程序运⾏期间才确定,即⼀个引⽤变量到底会指向哪个类的实例对象,该引⽤变量发出的⽅法调⽤到底是哪个类中实现的⽅法,必须在由程序运⾏期间才能决定。实现方式:子类继承父类、子类重写父类的方法、父类引用指向子类的对象或者类实现接口、类实现接口的方法,类引用指向接口

三、重载和重写区别?

  • 方法重载overload:同一个类中多个名称相同、参数类型或个数或顺序不同的方法
  • 方法重写override:父子类中方法名、参数列表、返回值相同、但方法体不同的方法
    • 返回值、异常小于等于,少于等于父类
    • 访问修饰符大于等于父类
    • static方法,final方法,private方法,构造器Constructor不能被继承,因此不能重写Override

四、private,default,protected,public访问控制符范围

  • private本类,default同包、protected同包及其子类,public所有

五、抽象类和接口有什么区别?如何选用?

  • 相同点
    • 都可以包含抽象方法
    • 都不能直接实例化对象;直到抽象方法都覆盖完了才可以创建对象
  • 不同点
    • 一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了单继承)
    • 抽象类可以定义构造函数;接口不能
    • 抽象类可以包含具体方法;接口在jdk8才有默认方法
    • 抽象类可以包含私有方法,接口在jdk9才有
  • 二者的选用
    • 优先选用接口,尽量少用抽象类
    • 需要定义子类的行为,又要为子类提供共性功能时才选用抽象类

六、this关键字有什么作用?

  • this代表对象本身
  • 作用:
    • 对象本身的引用
    • 区分重名的形参和成员变量
    • 引用本类构造函数
class A{private String name;private Integer age;public A(String name){this.name = name;}public A(String name,Integer age){this(name);//引用本类构造函数this.age = age;//区分重名的形参和成员变量}public void fun(){System.out.println("fun");}public void fun2(){this.fun();//对象本身的引用System.out.println("fun2");}
}

七、final、finally、finalize区别?

  • final是修饰符,修饰类不能被继承,修饰方法不能被重写,修饰变量不能被修改且必须在声明时初始化值。不可变指的是变量的引用不可变,不是引用指向的内容的不可变。
  • finally只能在try/catch语句中,无论try块中的代码是否抛出异常,finally块中的代码一定会执行。常用于释放资源(I/O)。不会被执行的情况:在finally语句块中发生了异常;在代码中用了System.exit()退出程序;
  • finalize:在Object类中的方法,在垃圾收集器删除对象之前对这个对象调用一次。finalize被调用不一定会立即回收该对象,所以有可能调用finalize后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会再次调用finalize了,进而产生问题,因此不推荐使用。

总结

本文介绍了java基础的面试(中),如有问题欢迎私信和评论

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

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

相关文章

什么是医学影像数据?

医学影像数据是指通过各种影像技术获取的人体内部结构和功能的可视化数据。这些影像技术包括但不限于X射线、计算机断层扫描(CT)、磁共振成像(MRI)、超声波(US)和正电子发射断层扫描(PET&#x…

【ue5】虚幻5同时开多个项目

正常开ue5项目我是直接在桌面点击快捷方式进入 只会打开一个项目 如果再想打开一个项目需要进入epic 再点击启动就可以再开一个项目了

Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行

章节内容 上一节我们完成了: Metastore的基础概念配置模式:内嵌模式、本地模式、远程模式实机配置远程模式 并测试 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 V…

昇思25天学习打卡营第13天|K近邻算法实现红酒聚类

K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非参数统计方法,是机器学习最基础的算法之一。它正是基于以上思想:要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接…

牛客链表题:BM1 反转链表(取头放尾法)

描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 数据范围: 0≤𝑛≤10000≤n≤1000 要求:空间复杂度 &…

TA都可以使用哪些存储接口?分别都存放在了哪里?

思考: 如何开发一个TA? sdk又是什么?开发一个TA的流程是怎样的?How to do?有关TA的签名介绍TEE开发Secure driver介绍RPMB的简介以及开发流程共享内存的最大限制是什么?TA的栈内存/堆内存又有哪些限制TA都支持哪些密码学算法?TA都可以使用哪些存储接口?分别都存放在了哪…

数据埋点从入门到了解

想讲讲为什么有埋点,举个例子 目录 什么是埋点?用途小红书上 埋点的主要类型代码示例1. 代码埋点前端埋点后端埋点 (Node.js 示例) 2. 全埋点示例3. 可视化埋点示例 解释常见问题埋点管理系统结论 王五是一名数据分析师,负责分析公司产品的用…

C++语言相关的常见面试题目(三)

1. List底层实现原理 省流: list底层实现了一个双向循环链表。 每个元素(或节点)包含三个部分:数据域(_M_Storage)、前驱指针(_M_prev)、后继指针(_M_next)。 数据域:存储实际数据。 前驱指针:指向链表中…

Mysql 数据库主从复制-CSDN

查询两台虚拟机的IP 主虚拟机IP 从虚拟机IP服务 修改对应的配置文件 查询对应配置文件的命令 find / -name my.cnf编辑对应的配置文件 主 my.cnf (部分配置) [mysqld] ########basic settings######## server_id 1 log_bin /var/log/mysql/mysql-…

gnome 建议安装的扩展

安装 扩展管理器: sudo apt install gnome-shell-extension-manager在 扩展管理器 里搜索并添加 扩展 推荐 Applications Menu:自带。左上角显示 应用程序 按钮,以下拉菜单分类显示应用RunCat:状态栏里显示一只猫和 cpu 利用率…

[激光原理与应用-98]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 2 - 什么是激光器焊接? 常见的激光焊接技术详解

目录 一、什么是激光焊接 1.1 概述 1.2 激光焊接的优点 二、激光焊接的应用 2.1 哪些场合必须使用激光焊接 1. 汽车制造业 2. 航空航天领域 3. 电子行业:消费类电子3C 4. 医疗器械制造 5. 新能源锂电池行业 6. 其他领域 三、激光焊接的分类 3.1 按焊接…

【ONLYOFFICE8.1】ONLYOFFICE8.1版本桌面编辑器测评

有宝子说office太贵,不适合个人和学生,而WPS不仅贵广告还多,那么有没有一款软件可以替代office和WPS呢?...当然有喽。当当当当!它就是众望所归、备受好评的ONLYOFFICE。下面就和小编一起来探索和测评一下ONLYOFFICE8.1…

深入解析怀庄之醉酱酒的独特魅力

在众多美酒中,酱酒以其独有的风格和丰富的文化内涵,赢得了无数鉴赏家的青睐。本文旨在从专业角度深入探讨酱酒的空杯留香现象、典型色泽特性及品鉴技巧,揭示其背后的科学原理与艺术魅力,助您更全面地理解与欣赏这一中华传统佳酿。…

C++报错无法访问Private

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2248 “main::Person::~Person”: 无法访问 private 成员(在“main::Person”类中声明) #include<iostream> #include<ctime> int main() {using namespace std;class Person{//Per…

响应式设计的双璧:WebKit 支持 CSS Flexbox 和 Grid 布局深度解析

响应式设计的双璧&#xff1a;WebKit 支持 CSS Flexbox 和 Grid 布局深度解析 在现代网页设计中&#xff0c;响应式布局是实现跨设备兼容性的关键。CSS Flexbox 和 Grid 作为 CSS 布局的两大支柱&#xff0c;提供了强大的工具来构建灵活和复杂的用户界面。WebKit&#xff0c;作…

JS的块级作用域是什么

在JavaScript中&#xff0c;块级作用域&#xff08;Block Scope&#xff09;是指变量或函数在代码块&#xff08;如{}内的代码区域&#xff09;中声明后&#xff0c;其作用域被限制在这个块级结构内部。这意味着&#xff0c;块外部的代码无法访问块内部声明的变量或函数&#x…

Linux之三剑客(grep、sed、awk)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

LeetCode热题100刷题8:54. 螺旋矩阵、73. 矩阵置零、48. 旋转图像

54. 螺旋矩阵 class Solution { public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> vec;if(matrix.empty())return vec;int left0;int right matrix[0].size()-1;int up0;int down matrix.size()-1;while(true) {for(i…

探索 WebKit 的网络脉络:深入网络栈的设计艺术

探索 WebKit 的网络脉络&#xff1a;深入网络栈的设计艺术 在当今这个以网页为中心的时代&#xff0c;WebKit 作为众多流行浏览器的心脏&#xff0c;其网络栈的设计对于网页内容的加载、处理和渲染起着至关重要的作用。本文将深入探讨 WebKit 网络栈的架构和设计&#xff0c;揭…

Nuxt:父子组件传值

在Nuxt中&#xff0c;父子组件间的数据传递数据有两种方法&#xff0c;如下 1、 props 父组件通过props将数据传递给子组件&#xff0c;子组件通过props接收数据。代码如下&#xff1a; <template><div><ChildLeft :msg"msg"></ChildLeft>…