面向对象和面向过程的区别:
-
面向过程:主要关注点是实现具体的过程,因果关系。
优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低
缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,另外面向过程的方式导致软件元素之间的“耦合度”非常高,只要其中一个环节出问题,整个系统受到影响,导致最终的软件“扩展力”差,另外,由于没有独立体的概念,所以无法达到组件复用。 -
面向对象:主要关注对象【独立体】能完成哪些功能。
优点:耦合度低,扩展力强。更容易解决现实世界当中更复杂的业务逻辑,组件复用性强。
缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计。
面向对象的三大特征:封装、继承、多态
采用面向对象的方式开发一个软件,生命周期中:
* 面向对象的分析:OOA
* 面向对象的设计:OOD
* 面向对象的编程:OOP
类和对象的概念:
- 什么是类?
类在现实世界中是不存在的,是一个模板,是一个概念,是人类大脑思考抽象的结果
类代表了一类事物
在现实世界当中,对象A与对象B之间具有的共同特征,进行抽象总结出一个模板,这个模板称为类。 - 什么是对象?
对象是实际存在的个体,现实世界中实际存在的。
类–【实例化】–>对象
对象又被称为实例/instance
对象–【抽象】–>类
- 重点
类描述的是对象的共同特征。 - 一个类主要描述的是 状态+动作。
状态–>一个类的属性
动作–>一个类的方法 - 类{
属性;//描述对象的状态信息
方法;//描述对象的动作信息
}
注意:状态和动作当具体到某个对象上之后,发现最终的结果可能不一样。对象和对象之间有共同特征,但是具体到对象之后又数据的差异。
类的定义
语法结构:
[修饰符列表] class 类名{
}
属性通常采用变量的方式来定义。
Java语言包括两种数据类型:基本数据类型和引用数据类型
引用数据类型:(String,System,student,User,Product,Customer…)
java语言中所有的class都属于引用数据类型。
对象的创建和使用
通过一个类可以实例化N个对象
实例化对象的语法:new 类名();
new是java语言当中的一个运算符,new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间。
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中。
栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈。
堆内存:new的对象在堆内存中存储。
引用数据类型的默认值是null
什么是对象?
new运算符在堆内存中开辟的内存空间称为对象。
什么是引用?
引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址。
访问实例变量的语法格式:
读取数据:引用.变量名;
修改数据:引用.变量名 = 值;
局部变量在栈内存中存储
成员变量中的实例变量在堆内存的java对象内部存储
实例变量是一个对象一份,100个对象100份




- JVM主要包括三块内存空间,分别是:栈内存、堆内存、方法区内存
- 堆内存和方法区内存各有一个,一个线程一个栈内存
- 方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈;方法执行结束之后,该方法所属的内存空间释放,称为弹栈。
- 栈中主要存储的是方法体当中的局部变量
- 方法的砝码片段以及整个类的代码片段被存储到方法区当中,在类加载的时候这些代码片段会载入
- 在程序执行过程中使用new运算符创建的java对象,存储在堆内存中,对象内部有实例变量,所以实例变量存储在堆内存当中。
- 变量分类:
- 局部变量【方法体中声明】
- 成员变量【方法体外声明】
* 实例变量【前边修饰符没有static】
* 静态变量【前边修饰符中有static】
- 静态变量存储在方法区内存当中
- 三块内存中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。
- 垃圾回收器【自动垃圾回收机制,GC机制】什么时候回考虑将某个Java对象内存回收?
* 当堆内存当中的java对象成为垃圾数据的时候,会被垃圾回收器回收
* 什么时候内存当中的java对象会变成垃圾?
没有更多的引用指向它的时候
这个对象无法被访问,因为访问对象只能通过引用的方式访问。
空指针异常:java.lang.NullPointerExcertion
“实例”相关的数据表示:这个数据访问的时候必须有对象的参与,这种数据就是实例相关的数据。
本文深入探讨面向对象和面向过程编程的区别,分析两者在软件开发中的优缺点,阐述面向对象的三大特性,并讲解类与对象的概念,以及它们在Java语言中的应用。

被折叠的 条评论
为什么被折叠?



