| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Javase杂谈(六) -> 正文阅读 |
|
[游戏开发]Javase杂谈(六) |
一、面向对象的概述????????例子“把大象装进冰箱里”。???????? 面向过程:
面向过程:
我们现在来说说面向对象的特点,大概可以概括为以下三点: 1.面向对象就是一种常见的的思想,符合人们的思考习惯。 2.面向对象的出现,将复杂问题简单化。 3.面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者。 二、类与对象的关系类:事物的描述。 对象:该类事物的实例.在java中通过new创建的。 三、对象的内存体现我们在函数的内存分配分析过,当该代码运行时,首先会加载主函数在栈内存中为main函数分配一个空间; 然后运行函数中的第一行语句,Car myCar = new Car(); 然后把局部变量myCar加载到栈内存,然后通过new在堆内存中分配空间,然后把这个地址赋给变量myCar;
当我们不赋值时: 我们看到了三个属性被默认初始化了,那么就是说我们没有给属性赋值,系统也会为我们打造一辆空皮汽车的. 当我们赋值时: 我们看到程序会先分别给num,color,brand这三个属性赋值,也就是说我们得到了一个完完整整的宝马汽车,而存放这辆车的地址没有发生变化,还是原来堆内存中的地址值. 同理如果我们创建多个car的实例,内存中的加载过程都是一样的,它们都有各自不同的空间和对应的地址. 四、成员变量与局部变量
注意 成员变量和局部变量的同名情况:
我们看到在打印出了局部变量的值,这是由于局部变量在栈的方法中,程序会把值直接赋值给局部变量,如果当在栈中找不到,则到堆内存中寻找指定的成员变量.这一点在以后的操作中一定要小心. 五、类类型参数与匿名对象类类型参数
从上面的代码我们很容易就实现了相同车辆的组装,提高了代码的复用性,同时我们注意到,封装的功能的参数是一个类类型的形式参数,它指向的是一个Car类型的对象. 匿名对象
那么我们就看到匿名对象的第一种用法: 我们看一段代码:
我们看一下结果: 对于这三句语句,每执行一名,在堆内存中都会创建新的空间,而不是只创建一个对象.当执行下面的一句语句时,前面的语句已经被释放了,所以上面的前两句代码没有意义.但是最后一句会被执行,因为该对象对方法只进行了一次调用. 匿名对象的第二种用法: 匿名对象可以作为实际参数进行传递. 比如前面我们的方法assemble(Car car),我们可以这样使用:
六、基本数据类型参数与引用数据类型参数的传递过程数据类型参数和引用参数我们在前面章节中都已涉及到了,那么我们来看看下面的两段代码:
现在我们来分别对这两对代码的运行程分析一下。 1.main方法进栈内存,main方法中有基本数据类型变量int x; 2.为main方法中的变量x赋值为3; 3.调用change(x)方法,则change方法进栈; 4.为change方法变量x赋值为4; 5.跳出change方法,同时change方法出栈,释放所有change方法和change方法中的x,即把x=4释放掉; 6.执行打印语句,些时的栈中只有main方法中的x,那么打印出的x=3; 7.跳出main方法,结束程序。 我们来看一下打印结果与我们的分析是不是一致的? 二、对于引用数据类型参数传递代码的运行过程分析: 1.main方法进栈内存,main方法中有一个类类型变量Demo d; 2.new创建Demo对象,在堆内存中开辟一个空间,并把空间地址传给d(我们这里假设为0x0078),并为该地址中的x初始化为0,然后把3赋给x; 3.把d所指堆内存(0x0078)中的x赋为9; 4.调用change(d)方法,change方法进栈,change方法中的对象d就是main方法中的d,指向之前的堆内存地址(0x0078); 5.把d所指堆内存(0x0078)中的x赋为4; 6.跳出change方法,同时change方法出栈,释放change方法和方法中的对象d; 7.执行打印语句,些时的栈中也是只有main方法,并且d指向堆内存(0x0078),该地址中的x就是步骤5中的值4; 8.跳出main方法,结束程序。 我们看看结果: 我们从两个代码打印出的结果可以看出结果与我们的分析是完全一致的。 那么,基本数据类型参数和引用数据类型参数的过程就是我们上面分析的过程。 七、?封装封装:是指隐藏对象的发生和实现细节,仅对外提供公共访问方式.
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 4:35:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |