1、面向对象
1)什么事对象? Object 本意即东西 万物皆对象 万物皆东西
2)面向对象,面向事物之间的关系
2、面向对象的概念
1)类型:名词的概念 如: 人 车
2)引用(变量): 引用具体概念实例的代词 变量放的是地址值 如 某人 某品牌的车
3) 对象(东西):具体概念的个体实例 如 张三 宝马
4)行为(方法)
5)多态: 行为/引用 在具体情形下发生了变化
6)封装: 任何对象实例都是尽可能封装, 减少暴露
7)继承:概念的继承关系
3、java类型 引用变量与堆对象
1)java类:用来描述事物类型的
2)类的声明:
public class Book{
String name ;//书名
String author ; //作者
int price; //价格
}
3)引用变量和对象的创建过程
A java的内存管理和分配
栈是java使用的一块内存区域 使用的方式是LIFO(后来者居上)
堆也是java使用的一块内存区域 使用方式是随机分配的
栈中存放的是变量名 也就是地址值 地址值对应堆中存放的对象
B、局部变量与堆对象空间分配
java的局部变量(方法参数)在栈中分配时按照变量的类型来分配的
对象在堆中分配按照类的属性(实例变量 比如上面Book 的 name author )来分配空间
C、变量类型与分配
变量分为 基本类型和引用类型
基本类型变量的空间大小:就是基本类型的空间大小 值是基本类型的值
引用变量的值是一个对象的地址值,引用变量通过地址引用了一个堆对象。
引用类型变量的占用空间的大小和值管理是透明的(不可看见)由java系统
管理
4)对象的属性默认自动初始化 自动初始化为零值 引用为null
5) 在null引用上调用属性和方法会发生异常
4、构造器(构造方法)作用:用来描述对象的初始化过程
老师讲的案例
制作月饼实例 制作(构造器)
做月饼的模子(类)--------------------------->月饼(对象)
原料(构建参数)
2)java中的构造器 声明在类内部, 方法名和类名一致的方法叫构造方法
构造方法不能有返回值类型
3)对象的实例化过程
new 运算创建对象实例
1、根据类的属性在堆中分配对象空间,并且自动化初始实例变量(属性)
2、根据参数类型调用构造器
3、new 运算返回对象的引用地址(这个地址是引用)
5、 this关键字
this是当前对象的引用 是运行期间当前对象的本身
this() 必须写在构造器的第一行
6、构造方法的重载 :参数不一样的构造器
方法签名=方法名+参数类型列表
方法重载:(1) 方法名一样 (2)方法参数不一样
也可以说方法名一样 方法签名不同的方法
7、默认的构造器
java类一定有构造器 如果java类没有声明构造器那么javac会
默认的添加一个无参的构造器 如果提供了构造器那么javac将不
在添加默认的构造器
5、对象的方法
1)表示对象的功能 依赖于对象存在
方法也也是动作 一般用动词声明
2)方法也经常重载 重载:方法名一样 参数不一样
重载体现了,功能的多态,重载的方法经常互相重用
方法重载体现了行为的多态,表现为方法更具参数不同执行不同的
过程
吃(饭) 吃(亏)
重用:代码的充分重复使用 进而减少代码量
动态绑定:引用变量和对象之间是动态绑定的, 是指在运行期间来确定
确定具体对象是哪个 如 this是引用变量,相当于代词,在运行期间
动态绑定到当前对象。