面向对象和面向过程的区别
面向过程 首先思考 “怎么按步骤实现” 并将步骤方法 一步一步实现 最终完成 (适合简单的任务 不需要协助的业务)
面向对象 把物件分开 按照对象分开
面向过程和面向对象都是对软件分析.设计和开发的一种思想。
宏观上使用面向对象把握 微观处理上仍然是面向过程
对象 : 一个完整的个体 有变量 和 方法 (自己理解的)
项目(企业)的进化过程 随着数据的增多而分类 无数据管理时代 ---- 》数组管理和企业的部门制度 ----> 对象和企业项目制度
类
类是对象的抽象 程序运行的时候通过类产生对象
属性 : 标识对象的静态特征
方法 : 标识对象的行为
垃圾回收机制
1 发现无用的对象
2回收无用的垃圾所占用的空间
如何发现 ;
1 引用计数法 : 堆中每一个对象都有一个引用计数 如果引用一次加1 如果为0标识无引用
优点 : 算法简单 确定 循环引用的对象无法识别
2 引用可达法 把引用关系看做一张图 从根点开始寻找对应的引用节点 找到这节点后继续寻找这个节点的引用节点 寻找完毕 没 有引用的是无用节点
通用的分代垃圾回收机制
年轻代 年老代 持久代
System.gc() 只是请求gc清理 gc是否清理得垃圾回收机制
this
用来表示对象本身
常用用法 1 用this表示对象本身变量 2 用this调用重构构造函数 必须再构造函数的第一句
static
用static申明的成员变量为静态成员变量 生命周期与类相同 再整个应用程序执行期间都有效
final
修饰变量 一旦赋值就不能被更改
修饰方法 改方法不能被重写 但是能重载
修饰类 该类不能被继承
参数传值机制
方法中所有的参数都是值传递
引用类型参数的传值 传递的是值的副本 ,但是引用类型指的是“对象的地址” 因此副本和原参数都指向了通一地址,改变副本参数指向的值 原参数也发生改变。
继承
子类继承父类的属性和方法
方法重写 override
== 方法名 形参列表相同
≤ 返回值类型和声明异常类型 子类小于等于父类
≥ 访问权限 子类大于等于父类
Object
所有类的根基类 所有java对象都有object 属性和方法
== 和 equals
"==" 代表比较双方是否相同 如果是基本类型则表示相等 如果是引用类型表示地址相等即是同一个对象
equals 提供定义 “对象内容相等” 的逻辑
super
是直接父类对象的引用 可以通过super来访问父类中被子类覆盖的方法或属性
构造方法的第一句总是 super()来调用父类的构造方法 (创建子类之前先创建一个父类 子类包含父类)
封装的作用和含义
就是把操作对象的属性和操作结合成一个独立的个体
java三大特性 继承 封装 和 多态
优点
1 提高代码的安全性
2提高代码的复用性
3 高内聚 低耦合
多态
同一个方法的调用 由于对象不同可能会有不同的行为
多态是方法的多态 不是属性的多态
多态的存在要有三个必要条件 继承 方法重写 父类引用指向子类对象
父类引用指向子类对象后 用该父类引用调用子类重写方法 多态出现了
数组
相同类型数据的有序结合
格式 type[ ] arrya_name
初始化 int[ ] array = new int[10]; array 在栈内存上 int[10] 在堆上储存