面向对象编程:强调过程 洗衣服倒洗衣粉 搓洗 甩干 亲历亲为
面向过程编程:强调用一定方法完成想要的结果,我们找了一个女朋友把衣服拿到干洗店,放入洗衣机中
我们面向过程按照我们想要的格式打印了数组
面向对象的三大特征
1.封装性
2.继承性
3.多态性
类和对象
【类】是一系列相关【属性】和【行为】的集合,用一系列的属性特征和行为特征来描述一类事物。可以看作是一系列实例的模板。
类和对象的关系 类似于图纸和产品的关系
接下来我们举一个例子来创建一个【学生类】
public class 类名称{ 数据类型 成员变量=信息;
public void 行为名称(){ 语句; }
}
1.成员方法没有 static修饰符,是成员方法
2.直接把变量写在类里而不是方法里,就是成员变量
我们通过成员变量创建了学生类
其中存储了信息学生姓名 huangyid 学生年龄 18 ,还有学生的行为 :学习 睡觉
接下来我们创建一个对象
我们把类写在同一个包下的student文件
我们创建一个对象,写在practice_student
步骤
1.导包
import 包名称.类名称;
如果类和对象在一个包下,不用import
2.创建
类名称 对象名(自己创立)=new 类名称();
我们通过student类在堆区new了一块内存;
3.使用
对象名.成员方法();
对象名.成员变量
我们实践一下 创建一个手机类
我们day06包下创建类phone
我们在day05包下创建了实例demo01phone
看下phone类
创建实例
类和实例在内存中的表示方法
进栈 压栈 后来居上
栈区 程序运行调用方法 后来居上 运行释放 x1 x2 x3 最后程序终止
堆区 new的成员变量和工作区方法的地址存在堆区调用
工作区 两个文件的class的方法和成员变量存放在工作区
我们程序的主调程序main方法在栈区运行,
当我们在栈区运行一个程序的时候,先从方法区调出方法地址,再到堆区找到成员变量和方法的地址,最后一起出栈到栈区,运行方法。 依次进栈并且x掉释放。
创建两个phone类实例的内存图
我们通过一行代码来改变输出结果
这次我们把one实例的地址赋给了two,此时我们只需要再栈区将one的地址复制,并修改堆区new的成员变量。最后进栈运行。最后出栈将main结束释放。
将类作为参数传入方法
我们要注意两点
第一我们传入的参数 phone param 将phone的地址作为参数
将对象作为参数传入方法的内存表示图
首先我们将两种方法和自己构建的方法method写入方法区
我们在将new的实例信息存放在堆区
在栈区我们将调用method方法,并将实例的地址0x666传入method方法.
最后完成实例作为参数传入方法