5、Java——面向对象
1、面向对象与面向过程之间的区别:
(1)相同点:都是一种思想,思维方式,思考问题的角度。
(2)面向过程 : "我该如何实现???" 按照分析出来的实现步骤一步一步实现。
(3)面向对象 : "我该找谁来实现???" 关注的就是对象,这个"谁",不关注过程面向对象是依托面向过程的。
(4)面向对象的优点:
①将复杂的问题简单化。
②更贴合现实生活中人们的思考角度。
③面向过程更适用于执行者,面向对象更适用于管理者角度。
2、使用面向对象的思维方式进行编程:
(1)类 : 定义一系列对象的共性(图纸或模板)。
(2)对象 : 用来描述现实生活中真实存在的事物。
(3)面向对象就是让程序与现实生活紧密联系。
(4)三大特性: 封装,继承,多态。
3、自定义类(模板类或javabean):
(1)成员变量:
静态变量 : 被static修饰的变量为静态变量(类变量)
实例变量 : 不被static修饰的变量为实例变量
(2)成员方法:
静态方法 : 被static修饰的方法为静态方法
实例方法 : 不被static修饰的方法
(3)public class 类名{
①成员变量 : 不被static关键字修饰的方法(实例变量)
修饰符 数据类型 变量名 = 赋值;
②成员方法 : 不被static关键字修饰的方法(实例方法)
修饰符 返回值类型(void) 方法名(参数列表){
方法体;
[return 返回值;]}
}
(4)分析步骤:
①具有的特点|特征 : 属性:名字 颜色,品牌,尺寸,价格,摄像头个数...(成员变量或实例变量)
②手机都能做什么: 功能:动词 打电话 打游戏 上网聊天 ,拍照 ....(成员方法|实例方法)
(5)测试类:
①导包 : 指明当前类的位置
import 包名.类名;
位置:类的上面
不需要导包的类:1.java.lang包下的内容
2.同包下的类
②创建类型的引用|变量--->创建对象 new具有创建对象能力
数据类型 变量名 = new 数据类型();
③使用
引用.成员变量
引用.成员方法()
注意:跟随对象使用成员,main方法时程序的入口,如果右键运行一段代码,需要主方法,成员是属于对象的,跟随对象使用,一个javabean模板类可以创建多个对象,根据需要使用,匿名对象可以使用,但是只能在当前行使用一次,一个方法的形参类型可以为自定义的引用数据类型所以说方法的形参类型可以为任意类型(基本数据类型|引用数据类型)
方法的返回值可以为任意类型
基本数据类型
引用 数据类型(自定义的引用数据类型)
4、对象的类存分析
1.栈的特性
先进的后出
后进的先出
方法执行完毕之后,马上弹栈是方法内存
方法被调用的时候开辟方法的栈帧压栈执行
2.堆的特性
无序的
根据对象地扯区分对象唯一
垃圾回收机制回收垃圾对象
存情的是对象数据或数组数组
(1)把class文件加载到内存方法区中
(2)JVM调用测试类的main方法主方法压栈执行
(3)逐行执行main方法中的代码
(4)new Class003_ Car0创建-个类型的对象
new关键字做的事情: 1.在堆中为对象开辟内存空间,这个类的成员变量会跟随对象进入到堆内存并附默认值。 2.调用构造器为对象初始化信息。 3.将对象的地址返回给引用|创建对象的位置。
|
(5)将对象的地址0x001赋值给前面的引用car1
car1存储的是对象的地址值,car1指向这个对象car1引用了0x001这个对象所以跟随car1引用能够使用所指向的对象
(6)根据引用使用成员car1.color, 到car1指向的对象的内存空间中找到color属性为它赋值=“"
(7)调用成员方法调用car1引用所执行的对象的成员方法run0 ,执行方法中的代码
(8)在栈中为方法开辟栈帧逐行执行run方法中的代码
(9)在run方法中使用成员变量的值指代的是调用当前run方法的对象内存中的成员
(10)run0执行完毕马上弹栈释放内存空间
(11)继续执行main方法中的代码
(12)创建小汽车对象
new关键字的步骤: 1.. 2...3...
(13)main执行完毕马上弹栈释放内存空间