01 面向对象思想 概述和举例
概念:
面向过程: 强调流程步骤, 完成一个功能, 一步一步实现, 自己来实现
面向对象: 强调具备属性和功能的个体, 实现一个功能, 找对应的个体去完成就可以了,功能由该个体去实现
02 面向对象思想 代码的举例
举例:
int[] arr = new int[长度]{}
int[] arr = {}
面向对象的编程就是使用对应的对象,去完成指定的功能
03 面向对象思想 类的概述 一类事物
什么是类?
类是对一类事物属性和功能的描述
在面向对象的代码中,属性使用成员变量来描述,功能使用成员方法来描述
小马哥理解的类:
类就是分类,将功能和属性,归结到一个类中,这不就是分类的过程中,这样做,实现了封装,也可以在这个基础上,实现了多态和继承
抽象出一个模板,这个模板就是类,一个分类标准是不能干活的,真正干活的是根据这个类创建出来的对象,相当于,我指定了一个标准,按照这个标准创造实例
本质:
定义类,就是定义模板,定义标准
面向对象编程,就是创建类,然后使用这个标准的对象来干活
定义类: 定义类的属性和功能
属性: 数据
功能: 方法
04 面向对象思想 对象概述 类具体体现
概念:
对象: 事物的一个实际个体,我们称之为实例
05 类的定义
语法:
public class 类名{
属性定义;
方法定义;
}
06 对象的使用
创建类的对象去干活
语法:
创建对象
类名 对象名 = new 类名();
使用对象
对象.成员变量; 赋值和取值
对象.成员方法();
07 定义类 创建对象 练习
08 创建一个对象 内存图
09 创建两个对象 内存图
每次创建对象都是开辟新的空间,每个对象中,都有一套自己的成员变量
10 类名作为参数 传递地址 内存图
修正: 对象作为参数
引用类型作为参数,本质上传递的是地址值
11 局部变量和成员变量区别
位置不同
作用范围不同
初始值不同? 成员变量会被赋初始值
局部变量没有初始值不能被使用
在内存中的位置不同
成员变量在堆里,对象在堆里
局部变量在栈里,方法在栈里
生命周期不同
成员变量,随着对象的创建而创建
局部变量,随之方法的调用而存在,随着方法的
注意:
方法执行完成,对象会马上消失吗? 不会马上,会被jvm垃圾回收
12 封装 使用private修饰变量 get set方法
封装的目的:
面向对象本质上就是封装,将属性和功能封装进对象, 通过对象调用相应功能
封装间接实现了对内部成员的隐藏
封装仅仅是保护属性吗?
不加private能被外界访问吗?
public和不加修饰是一样的吗?
13 封装 使用this区分成员和局部变量重名变量
原则:
局部变量和成员变量重名,局部变量隐藏了成员变量,变量就近访问,只会访问到局部的
原理上是这样的,jvm现在方法所在的栈中寻找这个变量,如果找到就使用;否则去堆中寻找成员变量,找到就使用.
this代表的当前对象
14 封装 构造方法的说明
概述:
创建对象的时候,就的通过构造方法来创建的
作用: 将对象初始化
语法:
默认无参构造-->给成员变量赋默认值(在这里给不用给成员变量做初始化)
手动有参构造-->给成员变量赋指定值
注意:
1,如果程序中没有手动提供构造方法,系统会给出无参构造方法;
2,如果手动提供了构造方法,系统将不再提供无参构造方法;
编写构造方法时,把无参构造方法和有残构造方法都写上
15 封装 JavaBean规范 快捷键
概述[JavaBean]:
JavaBean是Java语言编写类的一种标准规范,符合JavaBean的类,要求类必须是具体的和公共的,并且有无参数的构造方法,提供用来操作成员变量的set和get方法
作业:
创建一个Student类,使用标准的JavaBean规范来实现
快捷键:
alt+insert+constructor
16 总结
面向对象思想
面向过程
面向对象: 定义类(属性,构造);创建类的实例
局部变量
成员变量
封装
封装的本质作用: 面向对象就是通过抽象实现了封装,这样才可以进行代码的复用
在形式上捎带实现了对属性的隐藏
private
隐藏属性细节
提供公共的访问方式
this
构造