面试—JavaSE

目录

面向对象三大特征

重载和重写的区别

final和static修饰符

接口和抽象类的区别

String、StringBuilder、StringBuffer的区别


面向对象三大特征

  • 封装、继承、多态

  1. 封装

    将对象的属性和方法放入到一个类中,通过访问修饰符来控制对类的访问权限

  2. 继承

    继承是指子类可以继承父类的一些属性和方法

    子类继承后需要重写虚方法表(非private,非static,非final)中的方法

  3. 多态

    同类型的对象表现出的不同形态,即同一个方法在不同对象上有不同的实现

    • 条件 必须有继承关系 必须重写父类的非虚方法表中的方法 父类引用指向子类对象

    • 实现原理

      1. 动态绑定

        子类继承父类的方法,需要重写父类的方法。在运行时,Java会根据对象的实际类型来来确定调用哪个方法

      2. 虚拟机的方法调用机制

        • 在编译时,java字节码文件中的方法调用是符号引用的形式

        • 在运行时,虚拟机会将符号引用解析为实际的方法地址

        • 当进行方法调用时,虚拟机会根据对象的实际类型查找相应的方法表(方法区中),确定要调用的方法地址,对于重写的方法,子类的方法表会覆盖父类的方法地址,从而实现动态绑定

重载和重写的区别

  1. 定义

    重载:在同一个类中,定义多个同名的方法,方法的参数不同

    重写:子类继承父类,重写父类非虚方法表(非private,非static,非final)中的方法。重写后的方法根据子类实现

  2. 语法要求

    重载:方法名称相同,参数可以不同,返回类型可以不同

    重写:方法名称、参数、返回类型必须相同

final和static修饰符

  1. final修饰类表示这个类不会被继承

  2. final修饰变量表示这个变量为常量,值不会发生变化

  3. final修饰方法表示这个方法不会被重写

static是静态修饰符

  1. 当修饰变量时,表示静态变量,被该类所有的对象共享,一般用类名调用,也可以用对象名调用

  2. 当修饰方法时,表示静态方法,可以直接用类名调用这个方法,无需创建对象

    静态方法只能访问静态变量和静态方法

    非静态方法可以访问静态方法的静态变量和静态方法

  3. 当修饰代码块时,表示静态代码块,在类进行加载的时候执行,且只执行一次

接口和抽象类的区别

  1. 修饰符不同

    接口:interface

    抽象类:abstract

  2. 成员变量

    抽象类:可以有普通成员变量和静态变量

    接口:只能有静态常量

  3. 成员方法

    抽象类:可以有普通方法和抽象方法,抽象方法是继承的时候必须重写的方法

    接口:接口中的方法默认是抽象的

  4. 继承

    一个类可以实现多个接口(implements),但是只能继承(exthends)一个抽象类

String、StringBuilder、StringBuffer的区别

  1. String

    String是一不可变的,创建字符串后里面的内容不可以发生变化,每次操作字符串都会创建新的对象

  2. StringBulider

    StringBulider是一个可变的字符序列,可以高效的修改字符串内容而不会每次创建新对象,但是StringBulider是线程不安全的

  3. StringBuffer

    StringBuffer也是可变的字符序列,是线程安全的,每次修改都是同步的,可以在多线程中使用

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

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

相关文章

【ruby java】登陆功能/邮件发送模版240903

Rails 风格登录系统添加全面而详细的注释,解释每个部分的功能和用途。​​​​​​​​​ 详细注释,解释了每个文件和代码块的功能。以下是一些关键点的总结: 1. 控制器(Controllers): - ApplicationController: …

苏茵茵:以时尚之名,诠释品质生活

在女性追求个性化与自我表达的今天,时尚早已超越了简单的穿着打扮,它成为女性展现自我风格、彰显独特魅力的重要方式。从广泛的兴趣爱好到精心雕琢的个人风格,每一处细节都闪耀着女性对个性独特与自我表达的深切渴望。正是这股不可阻挡的潮流…

强化学习指南:训练过程与评估过程的区别

强化学习指南:训练过程与评估过程的区别 在强化学习(RL)中,训练和评估是两个截然不同但密切相关的过程。本指南将详细解释这两个过程的区别,以及如何正确实施它们。 1. 训练过程 训练是RL中最核心的部分&#xff0c…

Java 中常用内置接口函数

在 Java 8 及以后的版本中,引入了许多函数式编程的特性,其中最重要的就是内置的函数式接口。这些接口使得编写更简洁、可读性更强的代码成为可能。今天我将介绍四个常用的内置接口:Predicate、Function、Consumer 和 Supplier,并提…

static 变量和 static 函数各有什么特点?

static 关键字在 C、C 等编程语言中用于指定变量和函数的存储类型和可见性,其特点如下: static 变量 作用域: 局部静态变量:在函数内部声明,作用域限制在该函数内,但其生命周期贯穿程序整个运行过程。它只…

关于schneider施耐德140模块

SCHNEIDER 140模块是施耐德电气(Schneider Electric)公司生产的一系列工业自动化和控制产品,这些模块通常用于Quantum系列PLC(可编程逻辑控制器)系统中,以实现各种自动化和控制任务。以下是对SCHNEIDER 140…

2024.9.9 Python,有效的括号,三数之和,回溯算法解决括号生成

1.有效的括号 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。…

使用Protocol Buffers传输数据

使用 Google Protocol Buffers(ProtoBuf)与 Kafka 结合来定义和传输数据,可以确保传输数据的结构性、可扩展性和高效性。以下是一个简单的步骤指南,帮助你实现生产者和消费者。 1. 定义 ProtoBuf 消息格式 首先,你需…

笔记整理—内核!启动!—kernel部分(3)init进程—进程1

内核态下干了什么——构建内核。 在init进程中,一个进程有两种状态。1为内核态,init属于内核进程。2.用户态,自己将init转为用户态。从进程1之后的进程就都可以工作在用户态。 内核态中重点干了一件事情,挂载rootfs,找…

ffmpeg 视频编码及基本知识

理论 H264编码原理(简略) 1. 视频为什么需要进行编码压缩 降低视频数据大小,方便存储和传输 2. 为什么压缩的原始数据采用YUV格式 彩色图像的格式是 RGB 的,但RGB 三个颜色是有相关性的。 采用YUV格式,利用人对图像的…

【C语言必学知识点七】什么?还有人不知道什么是柔性数组?还不速来!!!

动态内存管理——详细解读柔性数组 导读一、什么是柔性数组二、柔性数组的特点三、柔性数组的使用四、柔性数组的优势结语 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们介绍了C/C程序中的内存分区,在C/C…

C++11 --- 可变参数模板

序言 不知道大家有没有细细研究过在 C 语言 中的 printf 函数,也许我们经常使用他,但是我们可能并不是那么了解他。先看一下调用格式:int printf ( const char * format, ... );,在这里的 format 代表我们的输出格式,后…

欧拉下搭建第三方软件仓库—docker

1.创建新的文件内容 切换目录到etc底下的yum.repos.d目录,创建docker-ce.repo文件 [rootlocalhost yum.repos.d]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# vim docker-ce.repo 编辑文件,使用阿里源镜像源,镜像源在编辑中需要单独复制 h…

华为防火墙 nat64

如果设备接收到的IPv6报文的前缀是设备为NAT64定义的前缀,说明报文的目的地址是IPv4网络,报文将经过NAT64处理后被转发至IPv4网络。 如果设备接收到的IPv6报文的前缀不是设备为NAT64定义的前缀,说明报文的目的地址是IPv6网络,报文…

java直接实例化对象和使用接口实例化对象之间的区别(java小知识点)

文章目录 1.定义一个MyClass类和一个 MyInterface接口2.具体使用场景3.如何调用 MyClass 自己的特有方法?4.总结 1.定义一个MyClass类和一个 MyInterface接口 public interface MyInterface {void doSomething(); // 权限修饰符默认是public }public class MyClass…

设计模式 | 单例模式

定义 单例设计模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这种模式常用于需要控制对某些资源的访问的场景,例如数据库连接、日志记录等。 单例模式涉…

网站钓鱼——挂马技术手段介绍

更多网安实战内容,可前往无问社区查看http://wwlib.cn/index.php/artread/artid/10194.html 网站挂马目前已经成为流氓软件以及红队人员快速获取目标主机权限的常用手段之一,在长时间的实战中也是出现了层出不穷的钓鱼方法,这次分享一下实际…

【北京迅为】《STM32MP157开发板使用手册》-第十三章 编译QtE5.12文件系统

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

内网中的RDP利用

学习参考 https://www.freebuf.com/articles/network/276242.html能跟着实操的都实操一下。熟悉一些命令,过程。 实验环境:win2008,192.168.72.139 两个用户: administrator,shizuru RDP服务 确定/开启 RDP服务确…

Chainlit集成Mem0使用一个拥有个性化AI记忆的网页聊天应用

前言 Mem0 简介,可以看我上一篇文章《解决LLM的永久记忆的解决方案-Mem0实现个性化AI永久记忆功能》。本篇文章是对Mem0 实战使用的一个示例。通过Chainlit 快速实现ui界面和open ai的接入,通过使用Mem0 实现对聊天者的对话记录的记忆。 设计实现基本原…