面向对象

任务

1. 面向对象
2. 面向过程
3. 类的创建
4. 对象的创建
5. 对象创建内存分析
6. 构造方法
7. this关键字

目标

1. 掌握面向对象思想
2. 掌握类和对象的创建
3. 掌握对象创建内存分析
4. 掌握构造方法
5. 掌握this关键字

第一节 : 面向对象的设计思想

1.1 什么是面向对象
 
1.2 面向过程
一种看待问题的思维方式,在思考问题的时候,着眼于问题是怎样一步一步解决的,然后亲力亲为的去解决问题
1.3 面向对象和面向过程的对比
面向对象是基于万物皆对象这个哲学观点

​ 举例说明:

​ 案例一:我想要吃大盘鸡 ​ 面向过程 面向对象 ​ 1.自己去买菜 1.委托一个会砍价的人帮忙去买菜 ​ 2.自己择菜 2.委托一个临时工帮忙择菜 ​ 3.自己做菜 3.委托一个厨师帮忙做菜 ​ 4.自己开始吃 4.自己开始吃

​ 案例二:小明是一个电脑小白,想要配一台电脑,买完零件后需要运到家里,组装完成后打开电脑玩游戏 ​ 面向过程 面向对象 ​ 1.小明补充电脑知识 1.委托一个懂电脑的朋友(老王)去帮忙买零件 ​ 2.小明去买零件 2.委托一个能跑腿的人去买零件 ​ 3.小明把零件带回家里 2.委托一个快递小哥帮小明送到家里 ​ 4.小明组装电脑 3.委托一个会组装电脑的人帮小明组装电脑 ​ 5.小明开机玩电脑 4.小明自己打开电脑,开始玩游戏

1.4 区别总结
 
1.5 类的定义
 
1.6 对象的定义
 
1.7 类与对象之间的关系
 
1.8 类的声明

​ 语法:访问权限修饰符 class 类名 {

​ //类体 ​ }

​ 说明:a.访问权限修饰符:只能是public(可以被省略,省略后为default) ​ b.类名只要是一个合法的标识符即可,但是要求:首字母必须大写,遵循驼峰命名法 ​ c.尽量使用单个或多个有意义的单词连接而成 ​ ​ public class FirstDemo {

​ }

​ 注意:a.一个Java文件中可以写多个类,如果写多个类,则编译后会生成多个.class文件 ​ b.一个Java文件中最多只能有一个被public修饰的类,这个类的类名必须和Java源文件名保持一致 ​ c.一个Java文件中如果只有一个类,并且这个类不用public修饰的话,类名和文件名可以不一样,但习惯上,我们都会写一样

1.9 类中成员变量的定义

​ 成员变量:

​ a.成员变量其实就是全局变量

​ b.成员变量也被称为属性 ​ c.分为静态变量和非静态变量 ​ d.在静态方法中只能访问静态成员变量,在非静态方法中可以访问非静态成员变量和静态成员变量

​ 成员变量【全局变量】和局部变量的区别: ​ a.定义的位置不同

成员变量:定义于类中,作用于整个类 局部变量:定义于方法或者语句中,作用于该方法或者该语句。

​ b.内存中出现的时间和位置不同

成员变量:当对象被创建时,出现在堆内存当中。 局部变量:所属的区间被运算时,出现在栈内存当中。

​ c.生命周期不同

成员变量:随着对象的出现而出现,随着对象的消失而消失。 局部变量:随着所属区间运算结束,它就被释放。

​ d.初始化值不同

成员变量:成员变量因为在堆内存当中,所以他有默认的初始值 局部变量:没有默认的初始值

1.10 类中方法的定义

​ a.分为静态方法和非静态方法

​ b.在同一个类中,在静态方法中只能调用静态方法,在非静态方法中可以调用非静态方法和静态方法

 

第二节:对象的创建以及内存分析

2.1 对象的创建

​ 对象的创建过程也被称为对象的实例化过程

​ 语法:类名 标识符 = new 类名();

 

总结:a.静态方法和静态成员变量都是属于类的,需要访问的时候用: 类名. 的方式来访问

​ b.非静态方法和非静态成员变量是属于对象的,需要访问的时候用: 对象. 的方式来访问 ​ c.开辟空间的时机不同

2.2 内存分析

内存中的对象

内存中的对象

​ 说明:程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存中,他指向实际的Person对象,而真正的Person对象则存放于堆内存中

2.3 练习
 

第三节:构造方法的定义

3.1 构造方法的定义

​ 构造方法也叫构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被调用的方法

​ 语法:访问权限修饰符 类名() { ​ //方法体 ​ }

​ 普通方法: ​ 访问权限修饰符 其他的修饰符 返回值类型 函数名(参数列表) {

​ }

​ 说明:a.构造方法是在实例化对象的过程中自动调用的

​ b.系统会默认为我们提供一个无参的构造方法 ​ c.构造方法没有返回值类型

3.2 构造方法的调用
 
3.3 构造方法和普通方法的区别

​ a.构造方法是在创建对象的过程中自动调用的,普通方法只能手动进行调用 ​ b.构造方法没有返回值类型【注意区别返回值void】,普通方法的返回值类型要么是确定的类型,要么为void ​ c.系统会默认为我们提供一个无参的构造方法,普通方法只能手动添加 ​ d.构造方法的方法名称必须和对应的类名保持一致 ​ e.构造方法在创建对象的过程中就会执行,而且每个对象只执行一次,对于普通方法而言,只有在需要使用的时候才被执行,并且一个对象可以调用多次

注意 ​ a.如果没有写有参的构造方法,系统会默认提供一个无参的构造方法 ​ b.如果手动写了有参的构造方法,系统将不再提供无参的构造方法,如果需要使用,则要手动添加(一般情况下,要求将无参的构造方法都写上,哪怕方法里面什么都不写)

3.4 构造方法重载
 
3.5 练习
 

第四节:this关键字

4.1 this.属性
访问本类的成员属性

​ 作用:为了区分成员变量和形参

4.2 this.方法

​ 访问本类的成员方法

4.3 练习
 
4.4 this()

​ 访问本类中的构造函数

​ 注意:

​ a.必须出现在构造方法中 ​ b.访问的是除了当前构造方法之外的其他构造方法 ​ c.具体访问的是哪个构造方法,取决于所传的参数 ​ d.只能书写在构造方法的第一条语句 ​ e.this()在同一个构造方法中只能出现一次

 

第五节:总结

第六节: 课前默写

1.使用Arrays工具类完成下面操作

使用静态初始化的方式初始化一个一维数组

​ 升序排序 ​ 实现二分法查找 ​ 将数组转化为字符串表示形式

​ 遍历出所有的元素

2.使用不定长参数自定义一个函数,函数主体部分实现只打印偶数的功能

第七节:作业

利用面向对象的思想写下面的程序

1.小美在朝阳公园溜旺财【注:旺财是狗】

2.小明穿着白色的特步运动鞋在奥林匹克公园跑步

3.赵老师在讲台上讲课,小刚认真的听课做笔记

4.张阿姨和李阿姨在物美超市买红富士

构造方法

1.定义一“圆”(Circle)类,圆心为“点”Point类,构造一圆,求圆的周长和面积,并判断某点与圆的关系

2.李晓在家里开party,向朋友介绍家中的黄色的宠物狗【彩彩】具有两条腿走路的特异功能。

3.王梅家的荷兰宠物猪【笨笨】跑丢了,她哭着贴寻猪启示。

4.富二代张三向女朋友李四介绍自己的新跑车:白色的宾利

第八节:面试题

1.什么是面向对象?面向对象和面向过程的区别是什么

2.构造方法与普通方法之间的区别

3.this关键字的作用以及使用