面向对象
编程思想
需求 ------>分析 ------>设计------>实现------>测试
面向过程 :程序的核心是代码逻辑 基本的组成单元是函数
对象:一切客观存在的事务
现实世界
需求来自现实世界,现实世界的核心不是过程,而是对象,过程是依附于对象存才的
1) 有什么 对象的属性
2) 能做什么 对象的方法 如何实现方法才能体现出过程
生活中的对象的关系
1)关联关系 : 一个对象成为另一个对象的属性 has a
2) 继承关系:一个对象是另一个对象 is a
3) 依赖关系:一个对象调用了另一个对象的方法 use a
生活中解决需求的思路:先有对象,建立对象之间的关系,最后设计过程(面向对象思想)
编程
计算机中的对象 : 数据
独立的数据单元 代表生活中的对象,数据类型、属性、方法都和生活中的对象保持一致,让计算机中的对象同样可以建立生活中对象的三种关系
面向对象的核心思想: 程序是核心、是对象 基本的组成单元 :类
计算机中的对象
属性 :数据(变量)(成员变量)
方法: 函数(成员方法)
类和对象
对象:数据
类:数据类型 程序员可以定义新的数据类型,以表示不同的对象
类中的属性 成员变量
局部变量和成员变量的区别
局部变量 | 成员变量 | |
---|---|---|
定义范围 | 定义在方法内部 | 定义在类中,任何方法之外 |
赋值 | 先赋值,后使用 | 可以不赋值,直接使用(有默认值,默认值不会改变,初始值可以改变) |
作用范围 | 从声明开始,到所在代码块结束 | 全类内部 |
同名问题 | 作用域重合范围内,不允许两个局部变量同名 | 成员变量可以和局部变量同名。同名时,局部变量优先访问 |
类中的方法
1 方法声明 格式: 修饰符 返回值类型 方法名(形参列表)抛出的异常
2方法实现 代码块 {}
如果有多个修饰符 顺序无关紧要
方法的重载(overLoad)
在一个类中,可以定义多个同名的方法,参数表不同(参数个数、类型和类型排列顺序)
只有形参名不同 不属于重载
编译时多态 : 编译器通过实参对应匹配相应形参的方法
重载的作用: 将对象同类行为, 由于参数表的不同造成的差异, 对用户屏蔽
构造方法
对象创建的过程
- 分配空间 对象的属性被赋予默认值
- 初始化属性 对象的属性被赋予初始值
- 调用构造方法 对象的属性通常可以被赋予构造参数
构造方法:只有在对象创建的过程中 被调用一次
- 不能收工调用(不能主动调用)
- 没有返回值类型
- 方法名必须和类名相同
如果一个类中没有定义任何构造方法,编译器会提供默认的公开无参的构造方法
通过类 创建并访问对象
new 类名(构造参数) 引用 对象的地址
变量:(根据类型的不同分两种)
- 简单数据类型变量:8种基本类型 (存放的是数据)
- 对象变量(引用):对象类型 (存放的是地址)
如果方法的参数是引用,当实参传给形参时,传的是地址,实参和形参共同指向同一个对象
this
- 引用 指向当前对象 如果访问属性或方法,没有明确指定引用,编译器默认添加
this.
,用来区分成员变量和局部变量this.a
成员变量a
局部变量 - 用在构造方法中调用本类其他的构造方法
对this的调用必须是第一个语句