面向对象
1.面向过程:procedure oriented 简称:pop,解决方法的思路和过程。
2.面向对象:object oriented 简称:oop,找”对象“解决问题。
注意:面向对象的基础是面向过程
面向对象步骤
1.抓特征
①”静态特征“:属性,实质就是全局变量。例如:身高、体重、姓名等。
②”动态特征“:方法、行为、功能、函数。
2.面向对象适用于解决复杂的问题,面向过程适用于解决简单的问题
列如:面向对象好比盖饭,我可以吃各种盖饭。
面向过程好比蛋炒饭,它始终是蛋炒饭。
3.总结:
面向对象:找”对象“解决问题 例如:类→创建对象
如何找对象:
①Java中提供的或者别人提供的,可以直接使用。
②没有提供的,自己写,在使用。
类与对象
1.类:蓝图、设计稿、模板。
2.抽象类:从众多事物中,抽取共同特性的本质或特征。
例如:猫→凡是符合这个特性的,就是猫
3.类:具有共性特征事物的抽象。
4.对象:由类创建,具体事物。
单个对象内存图
①将对象的内存图(.class)加载到方法区中,找到main方法进行压栈。
②加载Person到方法区中,在main方法中为变量p开辟空间。
③在堆中以Person为模板,创建Person对象。为Person中的name和age赋初始默认值,这个过程称为默认初始化。
④创建完毕对象的内存首地址值复制给引用变量p。
⑤p.name和p.age根据p找到对象进行赋值。
⑥Show方法进行压栈,show方法中带一个隐式指针,存放该方法由那个对执行。
总结:
①创造的对象在堆中存放,对象的属性也在堆中存放。
②类加载只加载一次,先去方法中查找是否存在,存在直接调用,不存在才去硬盘上加载。
创建两个对象内存图
总结:
①凡是new操作的,都在堆中创建对象。
②属性属于不同对象,每个对象都有自身属性,只能改变自身属性,不能改变其它对象属性
值传递和引用传递
1.值传递
2.引用传递
总结:
无论值传递还是引用传递,实质都是值传递。在参数传递过程,对于基本类型传递的是值,对于引用类型传递的是地址。