【尚硅谷】第06章:随堂复习与企业真题(面向对象-基础)

第06章:随堂复习与企业真题(面向对象-基础)


一、随堂复习

1. (了解)面向过程 vs 面向对象

  • 不管是面向过程、面向对象,都是程序设计的思路。
  • 面向过程:以函数为基本单位,适合解决简单问题。比如:开车
  • 面向对象:以类为基本单位,适合解决复杂问题。比如:造车

2. 类、对象

  • 类:抽象的,概念上的定义
  • 对象:具体的,类的一个一个的实例。
  • 面向对象完成具体功能的操作的三步流程(非常重要)
步骤1:创建类,并设计类的内部成员(属性、方法)
步骤2:创建类的对象。比如:Phone p1 = new Phone();
步骤3:通过对象,调用其内部声明的属性或方法,完成相关的功能
  • 对象的内存解析
    • 创建类的一个对象;创建类的多个对象;方法的调用的内存解析
  • Java中内存结构的划分
    • Java中内存结构划分为:虚拟机栈、堆、方法区;程序计数器、本地方法栈
    • 虚拟机栈:以栈帧为基本单位,有入栈和出栈操作;每个栈帧入栈操作对应一个方法的执行;方法内的局部变量会存储在栈帧中。
    • 堆空间:new 出来的结构(数组、对象):① 数组,数组的元素在堆中 ② 对象的成员变量在堆中。
    • 方法区:加载的类的模板结构。

3. 类的成员之一:属性(或成员变量)

  • 属性 vs 局部变量
    在这里插入图片描述

  • 属性 <=> 成员变量 <=>field <=> 字段、域

4. 类的成员之二:方法

  • 方法的声明:权限修饰符 返回值类型 方法名(形参列表){ // 方法体}
    • 重点:返回值类型、形参列表
  • return关键字的使用

5. 再谈方法

5.1 方法的重载(overload)
  • 方法的重载的要求:“两同一不同”(同样的类中,同样的名字,不同的形参)
  • 调用方法时,如何确定调用的是某个指定的方法呢?① 方法名 ② 形参列表
5.2 可变个数形参的方法
  • 格式:(int … args)
5.3 方法的参数传递机制:值传递(重点、难点)
> 如果形参是基本数据类型的变量,则将实参保存的数据值赋给形参。
> 如果形参是引用数据类型的变量,则将实参保存的地址值赋给形参。
5.4 递归方法
  • 递归方法构成了隐式的循环
  • 对比:相较于循环结构,递归方法效率稍低,内存占用偏高。

6. 对象数组

  • String[] ;Person[] ; Customer[]
    数组元素类型是类类型

7. package、import关键字的使用

  • package:指明声明的类所属的包。
  • import:当前类中,如果使用其它包下的类(除java.lang包),原则上就需要导入。

8. oop的特征之一:封装性(问的还挺多)

Java规定了4种权限修饰,分别是:private、缺省、protected、public。
我们可以使用4种权限修饰来修饰类及类的内部成员。当这些成员被调用时,体现可见性的大小。

举例:

> 场景1:私有化(private)类的属性,提供公共(public)的get和set方法,对此属性进行获取或修改
> 场景2:将类中不需要对外暴露的方法,设置为private
> 场景3:单例模式中构造器private的了,避免在类的外部创建实例。(放到static关键字后讲)

上理论:程序设计的原则之一

理论上:
  -`高内聚`:类的内部数据操作细节自己完成,不允许外部干涉;
    (Java程序通常以类的形态呈现,相关的功能封装到方法中。)
  -`低耦合`:仅暴露少量的方法给外部使用,尽量方便外部调用。
    (给相关的类、方法设置权限,把该隐藏的隐藏起来,该暴露的暴露出去)

9. 类的成员之三:构造器

  • 如何定义:权限修饰符 类名(形参列表){}
  • 构造器的作用:① 搭配上new,用来创建对象 ② 初始化对象的成员变量
   public Account(int i, double b, double a){
       id = i;
       balance = b;
       annualInterestRate = a;
   }

//使用:new对象,初始化
Account a = new Account(1000, 2000, 0.0123);

10. 三个小知识

10.1 类的实例变量的赋值过程(重要)
1. 在类的属性中,可以有哪些位置给属性赋值?
① 默认初始化;
② 显式初始化;
③ 构造器中初始化;
**********************************
④ 通过"对象.方法"的方式赋值;
⑤ 通过"对象.属性"的方式赋值;

2. 这些位置执行的先后顺序是怎样?
① - ② - ③ - ④/⑤
10.2 JavaBean
所谓JavaBean,是指符合如下标准的Java类:

- 类是公共的
- 有一个无参的公共的构造器
- 有属性,且有对应的get、set方法
10.3 UML类图

熟悉。

二、企业真题

2.1 类与对象

1. 面向对象,面向过程的理解?(平*金服、英**达)

略。

2. Java 的引用类型有哪几种(阿*校招)

类、数组、接口;枚举、注解、记录

3. 类和对象的区别(凡*科技、上*银行)

略。

4. 面向对象,你解释一下,项目中哪些地方用到面向对象?(燕*金融)

“万事万物皆对象”。

2.2 Java内存结构

1. Java虚拟机中内存划分为哪些区域,详细介绍一下(神**岳、数*互融)

略。

2. 对象存在Java内存的哪块区域里面?(阿*)

堆空间。
不能放在栈空间。

2.3 权限修饰符(封装性)

1. private 、缺省、protected、public的表格化作用区域(爱*信、拓*思、中*瑞飞)

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

能。但是改以后就不能作为程序的入口了,就只是一个普通的方法。

2.4 构造器

1. 构造方法和普通方法的区别(凡*科技、软*动力、中*软)

编写代码的角度:没有共同点。声明格式、作用都不同。

字节码文件的角度:构造器会以<init>()方法的形态呈现,用以初始化对象。

2. 构造器Constructor是否可被overload?(鸿*网络)

可以。

3. 无参构造器和有参构造器的的作用和应用(北京楚*龙)

略。
就是初始化的问题。

2.5 属性及属性赋值顺序

1. 成员变量与局部变量的区别(艾*软件)

6个点。

2. 变量赋值和构造方法加载的优先级问题(凡*科技、博*软件)

变量显式赋值先于构造器中的赋值。

如何证明?我看的字节码文件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QGIS文章五——对遥感影像进行土地类型分类—监督分类(dzetsaka : classification tool)...

dzetsaka classification tool是QGIS的强大分类插件&#xff0c;目前主要提供了高斯混合模型分类器、Random Forest、KNN和SVM四种分类器模型&#xff0c;相比于SCP(Semi-Automatic Classification)&#xff0c;他的一个特点就是功能专一&#xff0c;操作简单。 从十一月开始一…

深度学习 loss 是nan的可能原因

1 loss 损失值非常大&#xff0c;超过了浮点数的范围&#xff0c;所以表示为overflow 状态下的男。 解决办法&#xff1a; 减小学习率&#xff0c;观察loss值是不是还是nan 在将数据输入模型前&#xff0c;进行恰当的归一化 缩放 2 loss 的计算中存在除以0&#xff0c; log(0…

ios qt开发要点

目前关于ios qt的开发资料比较少&#xff0c;这里整理了几个比较重要的开发要点&#xff0c;基于MacOS14 Xcode15 Qt15.5 cmake iphone真机。 cmake报错&#xff0c;报错信息如下 CMake Error at /Users/user/Qt/5.15.5/ios/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:91 (m…

【PHP】PHP生成全年日历

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Centos7使用rpm安装mysql 5.7.43

Centos7使用rpm安装mysql 5.7.43 1、下载rpm包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar2、解压并安装 tar xf mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar yum -y install mysql-*3、按需修改mysql配置 #注意&a…

Impala VS Hive

Impala和Hive的关系 Impala是基于Hive的大数据实时分析查询引擎&#xff0c;直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析&#xff0c;实现了Hive的SQL语义的子集&#xff0c;功能还在不断的完善中。 与Hive的…

虹科Pico汽车示波器 | 汽车免拆检修 | 2017款东风本田XR-V车转向助力左右不一致

一、故障现象 一辆2017款东风本田XR-V车&#xff0c;搭载R18ZA发动机&#xff0c;累计行驶里程约为4万km。车主反映&#xff0c;车辆行驶或静止时&#xff0c;向右侧转向比向左侧转向沉重。 二、故障诊断 接车后试车&#xff0c;起动发动机&#xff0c;组合仪表上无故障灯点亮&…

探究Kafka原理-1.初识Kafka

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

Java集合拓展01

1、List&#xff0c;Set&#xff0c;Map三者的区别 List&#xff1a;一个有序&#xff08;元素存入集合的顺序和取出的顺序一致&#xff09;容器&#xff0c;元素可以重复&#xff0c;可以插入多个null元素&#xff0c;元素都有索引。常用的实现类有 ArrayList、LinkedList 和…

【Web】preg_match绕过相关例题wp

目录 ①[FBCTF 2019]rceservice ②[ctfshow]web130 ③[ctfshow]web131 ④[NISACTF 2022]middlerce 简单回顾一下基础 参考文章 p牛神文 preg_match绕过总的来讲就三块可利用 数组绕过、PCRE回溯次数限制、换行符 ①[FBCTF 2019]rceservice 先贴出附件给的源码 &l…

关于用css设置input输入框hover的时候的样式以及当input为disabled的时候,不要让hover样式生效

效果如果&#xff1a; 编辑状态下的时候&#xff1a; 只读状态下的时候&#xff1a; 代码如图&#xff1a; <input type"text" name"dataForm.exportCode" id"exportCodeItem" required :disabled"editDisabled" />input:not(…

SQL知多少?这篇文章让你从小白到入门

个人网站 本文首发公众号小肖学数据分析 SQL&#xff08;Structured Query Language&#xff09;是一种用于管理和处理关系型数据库的编程语言。 对于想要成为数据分析师、数据库管理员或者Web开发人员的小白来说&#xff0c;学习SQL是一个很好的起点。 本文将为你提供一个…

实时错误’-2147217887‘多步OLB DB 操作产生错误。如果可能,请检查OLE DB状态值

目录 背景问题问题分析问题解决 错误解决与定位技巧总结 背景 仍旧是学生信息管理系统的问题&#xff0c;当时做的时候没发现这么多问题呢&#xff0c;只能说明一件事&#xff0c;做的时候没有站在用户的角度考虑需求&#xff0c;设置了什么内容&#xff0c;就按照设置好的去测…

【libGDX】使用Mesh绘制圆形

1 前言 使用Mesh绘制三角形 中介绍了绘制三角形的方法&#xff0c;使用Mesh绘制矩形 中介绍了绘制矩形的方法&#xff0c;本文将介绍绘制圆形的方法。 libGDX 以点、线段、三角形为图元&#xff0c;没有提供绘制圆形的接口。要绘制圆形边框&#xff0c;必须通过割圆法逼近圆形&…

防止恶意攻击,服务器DDoS防御软件科普

作为一种恶意的攻击方式&#xff0c;DDoS攻击正以超出服务器承受能力的流量淹没网站&#xff0c;让网站变得不可用。近几年&#xff0c;这种攻击持续增多&#xff0c;由此优秀服务器DDoS防御软件的需求也随之增长。那么如何选择服务器DDoS防御软件&#xff0c;从根本上根除DDoS…

八、ffmpeg录制视频为yuv文件

前言 测试环境&#xff1a; ffmpeg的4.3.2自行编译版本windows环境qt5.12 图片的一些重要知识&#xff1a; RGB图片 位深度&#xff1a;每一个像素都会使用n个二进制位来存储颜色信息。每一个像素的颜色都是由红&#xff08;Red&#xff09;、绿&#xff08;Green&#xff0…

系统移植-交叉编译工具链

不同架构的机器码 与 汇编语言 都不可移植&#xff0c; 且二者一一对应 c语言中三种成分&#xff1a; 1.分号结尾的叫做语句 语句可以让CPU执行&#xff0c;可以进行预处理&#xff0c;编译等生成机器码 2.#开头的为预处理指令 不带分号 CPU无法执行 3.注释&#xff0c;…

Dubbo从入门到上天系列第十八篇:Dubbo引入注册中心简介以及DubboAdmin简要介绍,为后续详解Dubbo各种注册中心做铺垫!

一&#xff1a;Dubbo注册中心引言 1&#xff1a;什么是Dubbo的注册中心&#xff1f; Dubbo注册中心是Dubbo服务治理中极其重要的一个概念。它主要是用于对Rpc集群应用实例进行管理。 对于我们的Dubbo服务来讲&#xff0c;至少有两部分构成&#xff0c;一部分是Provider一部分是…

专业pdf编辑工具PDF Expert mac中文版特点介绍

PDF Expert mac是一款专业的PDF编辑和阅读工具。它可以帮助用户在Mac、iPad和iPhone等设备上查看、注释、编辑、填写和签署PDF文档。 PDF Expert mac软件特点 PDF编辑&#xff1a;PDF Expert提供了丰富的PDF编辑功能&#xff0c;包括添加、删除、移动、旋转、缩放、裁剪等操作…

云原生入门系列(背景和驱动力)

做任何一件事&#xff0c;或者学习、应用一个领域的技术&#xff0c;莫过于先要想好阶段的目标和理解、学习它的意义是什么&#xff1f;解决了什么问题&#xff1f; 这部分&#xff0c;就尝试来探讨下这个阶段需要理解并达成的目标以及践行云原生的意义在哪里。 1.历程 任何阶…