面试专辑——Java面向对象

### 目录介绍 - 1.面向对象的思想【思想,特征】 - 2.类和对象及其应用 - 3.对象的内存图 - 4.成员变量和局部变量区别 - 5.匿名对象 #### 1.面向对象的思想 - **1.1面向对象的思想** ``` A:面向过程思想概述 我们来回想一下,这几天我们完成一个需求的步骤:首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现。 一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。 在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。 那么什么是面向过程开发呢? 面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。 面向过程的代表语言:C语言 B:面向对象思想概述 当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。 可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了。这时就开始思索, 能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。 这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。 C:面向对象思想特点 a:是一种更符合我们思想习惯的思想 b:可以将复杂的事情简单化 c:将我们从执行者变成了指挥者 角色发生了转换 ``` - **1.2 面向对象的特征** - 有三个特征 * 封装 * 继承 * 多态 #### 2.类与对象及其应用 - **2.1 描述现实世界事物** - 描述学生事务 * 属性:姓名,年龄,性别 * 行为:学习,吃饭,睡觉 * 属性:就是该事物的描述信息【成员变量】 * 行为:就是该事物能够做什么【成员方法】 - **2.2 类和对象的概念** * a:类:是一组相关的属性和行为的集合 * b:对象:是该类事物的具体体现 * c:举例: * 类 学生 * 对象 班长就是一个对象 #### 3.对象的内存图 - **创建对象过程** * (1):加载A.class文件进内存 * (2):在栈内存为s开辟空间 * (3):在堆内存为学生对象开辟空间 * (4):对学生对象的成员变量进行默认初始化 * (5):对学生对象的成员变量进行显示初始化 * (6):通过构造方法对学生对象的成员变量赋值 * (7):学生对象初始化完毕,把对象地址赋值给s变量 - **3.1 一个对象的内存图** ![](https://blogsfiles.oss-cn-shanghai.aliyuncs.com/attachment/20190417/d983726eaadc47cc86e40e47f2f9b5cf.png) - **3.2 二个对象的内存图** ![](https://blogsfiles.oss-cn-shanghai.aliyuncs.com/attachment/20190417/5207499e86f44ab48bd949f7dc656360.png) - **3.3 三个对象的内存图** ![](https://blogsfiles.oss-cn-shanghai.aliyuncs.com/attachment/20190417/4ba49c8791ca433db7b968fdb163d54c.png) #### 4.成员变量和局部变量的区别 - **4.1 A:在类中的位置不同** * 成员变量:在类中方法外 * 局部变量:在方法定义中或者方法声明上 - **4.2 B:在内存中的位置不同** * 成员变量:在堆内存 * 局部变量:在栈内存 - **4.3 C:生命周期不同** * 成员变量:随着对象的创建而存在,随着对象的消失而消失 * 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 - **4.4 D:初始化值不同** * 成员变量:有默认初始化值 * 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。 * 注意事项:: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。 #### 5.匿名对象 - **5.1 什么是匿名对象** * 就是没有名字的对象 - **5.2 匿名对象应用场景** * a:调用方法,仅仅只调用一次的时候。 * b:匿名对象可以作为实际参数传递

全部评论

联系我们

025-66041049

在线咨询:点击这里给我发消息

邮件:face2obejct@gmail.com

工作时间:8:00-23:50

QR code