c 纯面向过程;c++半面向对象;java纯面向对象
- 面向过程
- 关注流程是怎么走的,关注因果关系
- 优点:
- 业务逻辑比较简单的程序,可以达到快速开发,前期投入成本低
- 缺点:
- 软件元素之间的耦合度非常高,只要其中的一环出问题,整个系统受到影响。导致最终的软件扩展力差。
- 没有独立体的概念,所以无法达到组件复用
- 优点:
- 关注流程是怎么走的,关注因果关系
- 面向对象
-
关注对象能完成哪些功能
- 优点:耦合度低,扩展力强。更容易解决现实世界中更复杂的业务逻辑。组件复用性强
- 缺点:前期投入成本高,需要系统的分析设计
-
面向对象三大特征
- 封装
- 继承
- 多态
-
采用面向对象的方式开发一款软件,生命周期当中:
- 面向对象的分析:OOA
- 面向对象的设计:OOD
- 面向对象的编程:OOP
-
类和对象的概念
- 什么是类?
- 类在现实世界当中是不存在的,是一个模板,是一个概念,是人类大脑思考抽象的结果
- 类代表了一类事物
- 在现实世界当中,对象a和对象b之间具有共同特征,进行抽样总结出一个模板,这个模板被称为类
- 什么是对象?
- 对象是实际存在的个体,现实世界当中实际存在
- 过程
- 通过类可以创建对象
- 让对象直接协作起来形成一个系统
- 类—实例化—》对象
- 对象被称为实例/instance
- 对象—抽象—》类
- 类描述的是对象的共同特征
- 一个类主要描述的是 状态+动作
- 状态----类的属性
- 动作----类的方法
- 类的定义
/** * [修饰符列表] class 类名{ * 属性 * 方法 * } */
- 属性往往是通过变量的方式来定义 - 在类体当中,方体体外定义的变量被称为’成员变量‘ - 成员变量没有赋值,系统赋默认值:一切向0看齐
- java语言中包括两种数据类型
- 基本数据类型
- byte
- short
- int
- long
- float
- double
- boolean
- char
- 引用数据类型
- xxx.class
- 基本数据类型
- 对象的创建和使用
- 类体=属性+方法
- 属性:存储数据采用变量的形式
- 由于变量定义在类体当中,方法体之外,这种变量称为成员变量
- 通过一个类可以实例化N个对象
实例化对象的语法:new 类名(); new 是java语言当中的一个运算符 new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间 方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中; 栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈; 堆内存:new的对象在堆内存中存储.
- 什么是对象?new运算符在堆内存中开辟的内存空间称为对象
- 什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址
- java 语言当中,程序员不能直接操作堆内存,java中没有指针,不像c语言。
- java语言当中,只能通过引用去访问堆内存当中的对象内部的实例变量
- 访问实例变量的语法格式
- 读取数据:引用.变量名
- 修改数据:引用.变量名=值;
- 局部变量在栈内存中存储;成员变量中的实例变量在堆内存的java对象内部存储
- 实例变量是一个对象一份,100个对象有100份
- 不能通过类名访问对象
- 引用是个变量,可以是局部变量或是成员变量
- 内存分析
- JVM(JAVA虚拟机)主要包括三块内存空间,分别是:栈内存、堆内存、方法区内存
- 堆内存和方法区内存各有一个。一个线程一个栈内存
- 方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈。方法执行结束之后,该方法所属的内存空间释放,称为弹栈
- 栈中主要存储的是方法体中的局部变量
- 方法的代码片段以及整个类的代码片段都被存储在方法区内存中,在类加载的时候,这些代码片段会载入
- 在程序执行过程中使用new运算符创建的java对象,存储在堆内存当中。对象内部有实例变量,所以实例变量存储在堆内存当中
- 变量分类
- 局部变量[方法体中声明]
- 成员变量[方法体外声明]
- 实例变量【前面修饰符没有static】
- 静态变量【前面修饰符有static】
- 栈内存中存储局部变量,堆内存中存储实例变量,方法区内存存储代码片段和静态变量
- 静态变量存储在方法区内存中
- 三块内存当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对堆内存。
- 垃圾回收器什么时候会考虑将某个java对象的内存回收呢?
- 当堆内存当中的java对象成为垃圾数据的时候,会被垃圾回收器回收
- 什么时候堆内存中的java对象会变成垃圾呢?
- 没有更多的引用指向它的时候
- 这个对象无法被访问,因为访问对象只能通过引用的方式访问
- 什么是类?
-