第08章:随堂复习与企业真题(面向对象-高级)

来源:尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)

基本都是宋老师发的资料里面的内容,只不过补充几个资料里没直接给出答案的问题的答案。
不想安装markdown笔记的app所以干脆在这里发一遍。

第08章:随堂复习与企业真题(面向对象-高级)


一、随堂复习

1. 关键字:static

  • static:静态的,随着类的加载而加载、执行。

  • static用来修饰:属性、方法、代码块、内部类(不能修饰构造器!!!)

  • 熟悉:static修饰的类变量、类方法与不使用static修饰的区别。

    • 类变量:类的生命周期内,只有一个。被类的多个实例共享。
  • 掌握:我们遇到属性或方法时,需要考虑是否声明为static的。

2. 单例模式(或单子模式)

  • 经典的设计模式有23种
  • 解决的问题:在整个软件系统中,只存在当前类的唯一实例。
  • 实现方式:饿汉式、懒汉式、枚举类等
  • 对比饿汉式和懒汉式
    • 饿汉式:“立即加载”,生命周期长,线程安全的。
public class BankTest {public static void main(String[] args) {Bank bank1 = Bank.getInstance();Bank bank2 = Bank.getInstance();System.out.println(bank1 == bank2); //实际上是同一个对象}
}//饿汉式
class Bank{//1.类的构造器私有化private Bank(){}//2.内部提供当前类的实例,即内部构建对象//4.此时,对象也要静态private static Bank instance = new Bank();//3.提供公共的静态方法,返回当前对象public static Bank getInstance(){return instance;}
}
  • 懒汉式:“延迟加载”,线程不安全。
public class GirlfriendTest {public static void main(String[] args) {}
}//懒汉式
class Girlfriend{//1.类的构造器私有化private Girlfriend(){}//2.声明当前类的实例//4.此时,对象也要静态private static Girlfriend instance = null;//3.获取当前类的实例,如果未创建对象,则在方法内部创建public static Girlfriend getInstance(){if (instance == null){instance = new Girlfriend();}return instance;}
}
  • 需要会手写饿汉式和懒汉式

3. 理解main()方法

  • public static void main(String[] args){}
  • 理解1:作为程序的入口;普通的静态方法
  • 理解2:如何使用main()与控制台进行数据的交互。
    • 命令行:java 类名 “Tom” “Jerry” “123”

4. 类的成员之四:代码块

  • 分类:静态代码块、非静态代码块
  • 使用频率上来讲:用的比较少。
  • 静态代码块:随着类的加载而执行
  • 非静态代码块:随着对象的创建而执行

总结:对象的实例变量可以赋值的位置及先后顺序

① 默认初始化
② 显式初始化 或 ⑤ 代码块中初始化
③ 构造器中初始化

④ 有了对象以后,通过"对象.属性"或"对象.方法"的方法进行赋值

执行的先后顺序:
① - ②/⑤ - ③ - ④

5. 关键字:final

  • 最终的

  • 用来修饰:类、方法、变量(成员变量、局部变量)

    • 类:不能被继承
    • 方法:不能被重写
    • 变量:是一个“常量”,一旦赋值不能修改。

6. 关键字:abstract

  • 抽象的
  • 用来修饰:类、方法
    • 类:抽象类:不能实例化。
    • 方法:抽象方法:没有方法体,必须由子类实现此方法。

7. 关键字:interface

  • interface:接口,用来定义一组规范、一种标准。

  • 掌握:接口中可以声明的结构。

    • 属性:使用public static final修饰

    • 方法:jdk8之前:只能声明抽象方法,使用public abstract修饰

      ​ jdk8中:声明static方法、default方法。

      ​ jdk9中:声明private方法。

  • 笔试题:抽象类、接口的对比。

8. 类的成员之五:内部类

> 成员内部类的理解
> 如何创建成员内部类的实例
> 如何在成员内部类中调用外部类的结构
> 局部内部类的基本使用(关注:如何在方法内创建匿名局部内部类的对象)

9. 枚举类:enum

  • 掌握:使用enum关键字定义枚举类即可。

10. 注解:Annotation

  • 框架 = 注解 + 反射 + 设计模式
  • Java基础阶段:简单。@Override 、 @Deprecated、@SuppressWarnings
  • 元注解:对现有的注解进行解释说明。
    • @Target:表明可以用来修饰的结构
    • @Retation:表明生命周期
  • 如何自定义注解。

11. 包装类的使用

  • 掌握:基本数据类型对应的包装类都有哪些?
  • 掌握:基本数据类型、包装类、String三者之间的转换
    • 基本数据类型 <-> 包装类:自动装箱、自动拆箱
    • 基本数据类型、包装类 <-> String
      • String的valueOf(xxx)
      • 包装类的parseXxx(String str)

12. IDEA:快捷键和debug

二、企业真题

2.1 static关键字

1. 静态变量和实例变量的区别?(保*丰、*软国际、*软华*、北京明**信)
类似问题:
> 说明静态变量和实例变量之间的区别和使用场景(上海*动)

2. 静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?(*度)
类似问题:
> 在java中,可以重载一个static方法吗?可以覆盖一个static方法吗?(Vi*o)

静态方法不能被重写。不能被覆盖。不存在多态性。

3. 是否可以从一个static方法内部发出对非static方法的调用?(同*顺)

只能通过对象来对非静态方法的调用。

4. 被static修饰的成员(类、方法、成员变量)能否再使用private进行修饰?(联*优势)

完全可以。除了代码块。

2.2 设计模式

1. 知道哪些设计模式?(*通快递、蚂**服)

单例模式、模板方法、享元设计模式

2. 开发中都用到了那些设计模式?用在什么场合? (久*国际物流)

略(目前答不了)

2.3 main()

1. main()方法的public能不能换成private,为什么(凡*科技、顺*)

可以改。但是改完以后就不是程序入口了。

2. main()方法中是否可以调用非静态方法?(浩*科技)

只能通过对象来对非静态方法的调用。

2.4 代码块

1. 类的组成和属性赋值执行顺序?(航*拓普)
类似问题:
> Java中类的变量初始化的顺序?(*壳)

略。

2. 静态代码块,普通代码块,构造方法,从类加载开始的执行顺序?(恒*电子)
类似问题:
> 类加载成员变量、静态代码块、构造器的加载顺序(*科软、软**力、同*顺)
> static代码块(静态代码块)是否在类的构造函数之前被执行(联*优势)

静态代码块 --> 普通代码块 --> 构造器

2.5 final关键字

1. 描述一下对final理解(华**博普)

2. 判断题:使用final修饰一个变量时,是引用不能改变,引用指向的对象可以改变?(*米)

引用不能改变。

引用指向的对象实体中的属性,如果没有使用final修饰,则可以改变。

3. 判断题:final不能用于修饰构造方法?(联*优势)

是的。

4. final或static final 修饰成员变量,能不能进行++操作?(佳*贸易)

不能。

2.6 抽象类与接口

1. 什么是抽象类?如何识别一个抽象类?(易*支付)

使用abstract修饰。

2. 为什么不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法?(止**善)

略。 为了语言的自洽。

3. 接口与抽象类的区别?(字*跳动、阿*校招、*度校招、**计算机技术及应用研究所、航*拓普、纬*、招**晟、汇*云通、数信**科技、北京永*鼎力、上海*连科技)

略。

4. 接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实现类(concrete class)?(航*拓普、*蝶、深圳德*科技)
类似问题:
> 接口A可以继承接口B吗?接口A可以实现接口B吗?(久*国际物流)

是;是;是;

5. 接口可以有自己属性吗?(华*中盛)

可以。必须是public static final的

6. 访问接口的默认方法如何使用(上海*思)

使用实现类的对象进行调用。而且实现还可以重写此默认方法。

2.7 内部类

1. 内部类有哪几种?(华油**普、来*科技)

略。

2. 内部类的特点说一下(招通**)
类似问题:
> 说一下内部类的好处(北京楚*龙)
> 使用过内部类编程吗,有什么作用(软**力)
8.匿名类说一下(阿*校招、上海立*网络)

2.8 枚举类

1. 枚举可以继承吗?(顺*)

使用enum定义的,其父类就是Enum类,就不要再继承其他的类了。

2.9 包装类

1. Java基本类型与包装类的区别(凡*科技)

略。

2.10 综合

1. 谈谈你对面向对象的理解(君*科技、航*拓普、…)
  • 面向对象的两个要素:类、对象 —> 面向对象编程。“万事万物皆对象”。
  • 面向对象的三大特征
  • 接口,与类并列的结构,作为一个补充:类可以实现多个接口。
2. 面向对象的特征有哪些方面? (北京楚*龙、深圳德*科技、直*科技、米*奇网络、航*拓普)
类似问题:
> 面向对象核心是什么?(平**服)

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

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

相关文章

Jupyter Notebook 开启远程登录

Jupyter Notebook可以说是非常好用的小工具&#xff0c;但是不经过配置只能够在本机访问 安装jupyter notebook conda install jupyter notebook 生成默认配置文件 jupyter notebook --generate-config 将会在用户主目录下生成.jupyter文件夹&#xff0c;其中jupyter_noteb…

查看ios app运行日志

摘要 本文介绍了一款名为克魔助手的iOS应用日志查看工具&#xff0c;该工具可以方便地查看iPhone设备上应用和系统运行时的实时日志和奔溃日志。同时还提供了奔溃日志分析查看模块&#xff0c;可以对苹果奔溃日志进行符号化、格式化和分析&#xff0c;极大地简化了开发者的调试…

Pandas 高级教程——IO 操作

Python Pandas 高级教程&#xff1a;IO 操作 Pandas 提供了强大的 IO 操作功能&#xff0c;可以方便地读取和写入各种数据源&#xff0c;包括文本文件、数据库、Excel 表格等。本篇博客将深入介绍 Pandas 中的高级 IO 操作&#xff0c;通过实例演示如何灵活应用这些功能。 1.…

短说社区运营的使用工具分享(一)

本文是一篇针对短说社区运营的使用工具分享帖&#xff0c;是小编结合日常使用&#xff0c;总结的一些可以帮助网站管理员和运营人员进行日常操作和管理的工具。 1. 想天工作台之运营面板 想天工作台可以将桌面划分不同的类型来辅助办公&#xff0c;我分享下我当前的桌面情况&…

基于Mbed Studio环境下开发STM32

基于Mbed Studio环境下开发STM32 &#x1f4cd;Mbed官网&#xff1a;https://os.mbed.com/ ✨mbed OS是ARM出的一个免费开源的&#xff0c;面向物联网的操作系统。提供了一个定义良好的API来开发C应用程序&#xff1b;集成度很高&#xff0c;类似Arduino&#xff0c;目前并不兼…

新兴品牌如何做好传播?媒介盒子分享三招

很多品牌抓住了品类和流量红利&#xff0c;给自己做了传播&#xff0c;但是红利是有时效的&#xff0c;流量越来越贵&#xff0c;竞争对手你追我赶&#xff0c;只有真正占领用户心智&#xff0c;才能获取长期利润。今天媒介盒子就来和大家聊聊&#xff1a;新兴品牌如何做好传播…

elementui 表单校验validate不起效果

原因&#xff1a; 自定义的validator验证方式需要调用callback。 验证失败callabck(new Errno(‘’)). 验证成功 callback() var checkNumber3 (rule, value, callback) > {if (value && !Number.isInteger(value)) {callback(new Error("请输入数字值"…

Java 中 Lambda 表达式的使用

目录 一、Lambda 表达式的概念 二、Lambda 表达式的语法格式 三、Lambda 表达式的案例使用 1、使用 Lambda 来实现启动线程 2、使用 Lambda 表达式实现集合的排序 3、使用 Lambda 表达式实现文件夹下的文件查找 一、Lambda 表达式的概念 Lambda 表达式是特殊的匿名内部类…

用katalon解决接口/自动化测试拦路虎--参数化

不管是做接口测试还是做自动化测试&#xff0c;参数化肯定是一个绕不过去的坎。 因为我们要考虑到多个接口都使用相同参数的问题。所以&#xff0c;本文将讲述一下katalon是如何进行参数化的。 全局变量 右侧菜单栏中打开profile&#xff0c;点击default&#xff0c;打开之后…

[spark] SaveMode

https://spark.apache.org/docs/latest/api/java/index.html?org/apache/spark/sql/SaveMode.html Overwrite 覆盖模式是指将DataFrame保存到数据源时&#xff0c;如果数据/表已经存在&#xff0c;则现有数据将被DataFrame的内容覆盖。 注意: Overwrite 模式会覆盖已存在的表…

Alibaba Cloud Linux 3.2104 LTS 64位镜像兼容和性能如何?

阿里云Alibaba Cloud Linux 3.2104 LTS 64位镜像是可以选择的&#xff0c;它阿里云打造的Linux服务器操作系统发行版&#xff0c;针对云服务器ECS做了大量深度优化&#xff0c;完全兼容RHEL/CentOS生态和操作方式&#xff0c;如果是阿里云服务器ECS建议选择Alibaba Cloud Linux…

室内设计师效果图云渲染好?还是本地渲染好?

室内设计师在设计项目中经常面临一个关键的技术选择&#xff1a;使用云渲染服务或本地渲染完成效果图渲染呢&#xff1f;每种方式都有其独的优势与不足&#xff0c;且影响整个设计的完成速度、质量和成本。当然还有部分人群不知道云渲染是什么&#xff1f;本文整理关于云渲染的…

Mybatis Java API - Using Mappers

<T> T getMapper(Class<T> type) 您提到的插入&#xff08;insert&#xff09;、更新&#xff08;update&#xff09;、删除&#xff08;delete&#xff09;和查询&#xff08;select&#xff09;方法对于一些操作来说确实很强大&#xff0c;但它们也比较冗长、不…

完全背包问题,原理剖析,公式推导,OJ详解

文章目录 前言一、完全背包的状态设计1、状态设计2、状态转移方程3、对比0/1背包问题4、时间复杂度分析 二、完全背包问题的优化1、时间复杂度优化2、空间复杂度优化 三、OJ练习裸题完全背包离散化最小值 前言 完全背包问题&#xff0c;相比0/1背包问题&#xff0c;实就每个物品…

upset 绘制

好久没有更新,今天来一个upset图的绘制 1.1 安装包 #绘制upset的包现在看来有三个 ## UpSet ### 最基本的upsetR包,使用方便,但是扩展不方便 devtools::install_github("hms-dbmi/UpSetR") ## complex-upset ### UpSet的升级款 支持ggplot2 devtools::install_git…

码住!8个小众宝藏的开发者学习类网站

1、simplilearn simplilearn是全球排名第一的在线学习网站&#xff0c;它的课程由世界知名大学、顶级企业和领先的行业机构通过实时在线课程设计和提供&#xff0c;其中包括顶级行业从业者、广受欢迎的培训师和全球领导者。 2、VisuAlgo VisuAlgo是一个免费的在线学习算法和数…

c++环形缓冲区学习

C环形缓冲区设计与实现&#xff1a;从原理到应用的全方位解析 - 知乎 这里插入一个回调函数的学习&#xff1a; C回调函数详解_c 回调函数-CSDN博客 【C】C回调函数基本用法&#xff08;详细讲解&#xff09;_c 回调函数-CSDN博客

Ubuntu 下播放语音提示

目录 一、安装语音库 二、生成音频文件 三、语音播放代码 一、安装语音库 sudo apt update apt-get install libasound2-dev二、生成音频文件 # 文字生成 MP3网地&#xff1a;https://www.text-to-speech.cn/# MP3 转 WAV网址&#xff1a;https://www.aconvert.com/cn/aud…

微软为 Android 用户推出了人工智能助手 Copilot 应用程序

微软为 Android 用户推出了人工智能助手 Copilot 应用程序 - 与 ChatGPT 类似&#xff0c;它包括聊天机器人功能和 DALL-E 3 图像生成 - 该应用程序包括免费访问 OpenAI 的 GPT-4 模型&#xff0c;这是 ChatGPT 中的付费功能 - 发布微软将 Bing Chat 更名为 Copilot 您是否尝试…

Nature Perspective | LLMs 作为角色扮演引擎

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 随着对话智能体的表现越来越像人&#xff0c;我们必须开发出有效的方法&#xff0c;在不陷入拟人化陷阱的情况下&#xff0c;用高层次的术语描述它们的…