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

单元测试总结2

1、重载和重写的区别

01、定义不同:重载是在同一个类中定义多个方法名相同但参数列表不同的方法;重写是子类对父类中同名同参数列表的方法进行重新实现

02、范围不同:重载发生在同一个类中,重写发生在子类和父类中

03、参数要求不同:重载要求方法参数的类型、个数或者顺序不同,重写要求方法参数列表必须相同

04、返回值要求不同:重载对返回值类型没有强制要求;重写要求返回值类型相同或为父类返回值类型的子类

05、访问修饰符要求不同:重载对访问修饰符无特殊限制,重写时子类的访问修饰符不能比父类的更加严格

06、异常处理要求不同:重载对抛出的异常无特殊限制;重写时子类不能抛出比父类更多或者更宽泛的异常

07、调用方式不同:重载根据调用时的参数列表确定调用哪个方法;重载根据对象的实际类型确定调用子类还是父类的方法。

2、接口与抽象类的区别

        01、定义不同:接口是方法声明的集合,不包含方法实现;抽象类是包含抽象方法和具体方法的类

        02、继承方式不同:类可以实现多个接口;类只能继承一个抽象类

        03、方法实现不同:接口中的方法默认是抽象的;抽象类可以包含抽象方法和具体实现方法

        04、成员变量不同:接口中成员变量默认是public static final,抽象类可以有各种访问修饰符的成员变量

        05、构造造方法不同:接口没有构造方法;抽象类有构造方法

        06、设计计目的不同:接口用于定义行为规范,实现多态;抽象类用于代码复用和继承体系构建

        07、访问问修饰符不同:接口中的访问修饰符大多是public,抽象类中可以有多种访问修饰符

        08、多继承支持:接口支持多实现;抽象类只能单继承

3、简述Java异常体系

异常是程序运行过程中发生的非预期事件,Java中所有的异常都继承Throwable类:

  1. Error:由JVM生成并抛出,代表严重的系统级错误,程序通常无法处理,应避免捕获
  2. Exception:程序可以处理的异常:

01、受检异常:编译期必须处理的异常,要么用try-catch捕获,要么用throws声明抛出

02、非受检异常:继承自RuntimeException的异常,编译期不强制处理,通常由程序逻辑错误导致

4、访问修饰符public、private、protected、以及不写(default默认)时的区别

01、public修饰的内容可以在本类,本包,其他包子类以及其他包中访问

02、protected修饰的内容可以在本类,本包,其他包子类中访问

03、default修饰的内容可以在本类以及本包中访问

04、private修饰的内容只能在本类中访问

5、简述java 128陷阱

Java128陷阱是指:java对-128到127范围内的Integer对象进行缓存,自动装箱时会复用缓存对象,此时用“==”比较会返回“true”,但超出这个范围,每次装箱都会创建新对象,用“==”比较会返回“false”,因此比较Integer对象值应使用equals()方法。

6、获取Class对象的三种方式以及如何忽略安全访问修饰符的安全检查

01、通过类名.class:直接使用类名.class的方式获取,这种方式在编译时就确定了类型,无需创建对象实例

02、通过对象实例.getClass():通过已有对象的getClass()方法获取,适用于已创建对象的情况

03、通过Class.forName():通过全类名字符串动态加载类并获取Class对象,需要处理ClassNotFoundException。

7、简述从泛型类派生子类的两种情况

01、子类仍是泛型类:子类继承泛型父类时,保留泛型参数,自身也声明为泛型类。此时需要指明父类的泛型参数。

02、子类为具体类:子类继承泛型父类时,明确指明父类的泛型参数为具体类型,自身不再是泛型类。

注意:子类不能直接继承未指定泛型参数的原始泛型父类,这会丢失泛型类型信息,编译器会提示警告。

http://www.xdnf.cn/news/1429201.html

相关文章:

  • MTK Linux DRM分析(二十六)- MTK mtk_drm_ddp_xxx.c
  • Spring Boot 3.5.3 集成 Log4j2 日志系统
  • 从spring MVC角度理解HTTP协议及Request-Response模式
  • 异常处理小妙招——1.别把“数据库黑话”抛给用户:论异常封装的重要性
  • 图像 OSD层数据 显示--OSD LOGO单色黑色显示,按区域大小申请MMZ内存的优缺点分析
  • 2022版Unity创建时没有2D灯光(2D Light),没有Global LIght2D怎么办?
  • Java集合遍历的方法有哪些
  • 使用Spark计算WordCount
  • 美团 LongCat 开源大模型60 亿参数 MoE 架构,赋能开发者加速 AI 应用落地
  • vue2中如何使用Ant Design Vue 中的 Tooltip 文字提示
  • 242. 有效的字母异位词| 349. 两个数组的交集
  • 通信中FDD和TDD的区别
  • 【JavaEE】多线程案例
  • 使用 Python 的 SymPy 进行符号计算
  • 机器学习回顾——决策树详解
  • 详解Grafana k6 的阈值(Thresholds)
  • FPGA时序分析(三)--基础知识
  • Leetcode_206.反转链表(递归)
  • 【嵌入式电机控制#进阶7】V/F强拖启动
  • 变频器实习DAY41 单元测试介绍
  • 前端实现解析【导入】数据后调用批量处理接口
  • Redis有哪些部署方案?了解哨兵机制吗?
  • AI文档产品与传统OCR软件的根本区别是什么?
  • 手写Muduo网络库核心代码2--Poller、EPollPoller详细讲解
  • 百度智能云,除了AI还有啥?
  • 线程特定存储
  • Go语言开发合并文件小工具
  • go命令行工具:如何在现有的工程里加入使用cobra
  • 苹果手机文本转音频,自行制作背诵素材
  • Redis 持久化机制详解