2021-05-20

                                          Java基础—Day08

目标:

1. 面向对象

2. 对象 vs 类

3. 如何去设计一个类

4. 类图

5. 构造方法[构造器] + this

1.面向对象概述

1.1 vs 面向过程

面向过程:你找对象为例,你每一步都亲历亲为,动作的一个执行者

面向对象:找一个合适的人帮你干活。 红娘 ,动作的指挥着

面向 对象 的核心:就是找合适的人,帮你干活【调用方法】

1.2 OOP/OOA

OOP:Oriented Object Programming,面向对象编程

OOA:Oriented Object Arti....,面向对象分析/设计

2.对象概念

世界由什么组成的?原子、万物、人、动物.......

我们在认识世界的过程中,无形以分类去划分。

2.1 对象的概念

万物皆对象

对象[物]:客观存在的实体/事务,比如kb13的张三,即张三就是一个对象。

类:是一个抽象的概念,将其当做一个模版。

2.2 找身边的对象

比如教室的投影仪

2.3 程序中怎么玩

在java中,类是代码的组织单元【即我们的代码需要在类体中编写】,我们的对象需要通过类创建 出来。

找对象的特征:(静态特征+动态特征)

静态特征【属性】:身高、身材、性别、年龄........

男:属性的值

动态特征【方法】:一般是动宾结构,吃喝拉撒睡,学习

在分析对象的特征的时候,要根据场景去分析出他的属性和方法,无法且没有必要穷举出所有的属 性和方法。

三步走:

需求:编写一个学生类,学号、名字、分数,打印学生信息

2.3.1 编写一个类

共性:属性和方法,将属性和方法写在一个文件中,这个文件是通过类组织

  思考:Java源码本身提供了很多类,为什么还要自定义的。它不知道你具体类的属性和方法是啥, 也无法穷举世界万物。所以,它提供了一个种自定义类的方式

2.3.2 创建对象

2.3.3 使用对象

3.构造方法

若自定义了有参构造,那么你要给加上无参构造 ----》 当成一个好习惯

3.1 作用

1. 创建对象: new 构造方法(有就传)

2. 为属性赋初始值

3.2 特点

1. 方法名称跟类名一致

2. 我们没有定义这样的一个特殊方法,但是可以调用,说明JDK默认给我们提供了一个无参构造

3. 一旦我们显示定义有参构造,则默认的无参构造将失效。

4. 往往我们就需要使用无参构造,此时你应该自定义一个无参构造

5. 构造方法也有重载

6. 没有返回值,连void也不能有

4.this关键字

代表:代表的就是当前对象,就你造的哪个对象,代表的就是谁;只能用在你设计的那个类中

用法: 1. this.成员变量 :可以解决在构造方法中,跟形参重名的问题;在方法中调用的时候,可以增加可 读性

2. this.当前类的方法名 :此处 this 可以省,增加可读性

3. this(构造方法的参数) :可以在构造方法中调用其他的构造方法,必须放在构造方法的第一行

在一个构造方法中调用其他构造方法的目的:可以节省很多代码

5.类图

5.1 简介

可以画类图的工具【设计工具】:

1. processon :https://www.processon.com/

2. draw.io :https://app.diagrams.net/

3. startuml :https://staruml.io/ 可以直接生成java代码

4. powerDesigner :是一款强大的设计工具,可以画很多图

5.2 对象在内存中的结构图

作为扩展了解,便于你去理解一些东西

6.成员变量vs局部变量

1. 位置不同

①成员变量:在类中

②局部变量:在方法中,形参,代码块

2. 初始值不同

①成员变量:有初始值,比如引用类型null,基本类型比如int 0

②局部变量:必须初始化,才能使用【必须显示赋值,才能使用】

3. 作用范围不同

①成员变量:整个类中

②局部变量:它所在的{}范围

4. 在内存中的区域不同 栈 vs 队列:

栈:先进后出

队列:先进先出 FIFO ---》First in First out

①成员变量:在堆内存中

②局部变量:在栈中

5. 生命周期不同

①成员变量:随着对象的存在而存在,对象被标记为垃圾对象,需要一个过程,同时回收也需要一 个过程

②局部变量:在栈中,用完之后就出栈

7.对象数组

数组中存放的是对象

明确:

1. 数组如何定义?数据类型[] 数组名称

2. 对象的数据类型是啥? 它的所属类,即该对象是通过哪个类【模版】造出来的。String name; Stu stu

3. 是否可以通过数组的方式操作对象?比如,获取到该班级所有学生的名字 需求:使用对象数组存放一批学生信息(姓名、学号、分数),若学生的分数低于60分,给他加2分辛 苦分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值