类和对象对于初学者来说是难点,主要难在概念多,知识点抽象。对于这部分的学习会让很多同学们怀疑人生,有这种感觉是正常的,不要灰心。
类和对象原本就不是一朝一夕就能学懂的,一定是在长期的学习和工作中领悟出来的。
为了让同学们学起来更轻松,本文从应用的角度阐述类和对象及其关系。
下表是一份简化了的商品订单,订单中购买了3种商品,每个商品包含商品名称,单价,数量。
商品名称 | 单价 | 数量 |
---|---|---|
LED灯带 | 25 | 2 |
扩展坞 | 39 | 1 |
电子表 | 39 | 1 |
在电商系统开发中,这些订单是要保存到数据库中的。因此需要在数据库中创建订单表,来存储订单信息。我们以MySQL数据库为例,创建订单表如下
然后插入订单信息
现在查询订单表,结果如下:
你或许有疑问,本文不是讲类和对象吗?干嘛从数据表开始讲起呢?
数据表与类和对象当然是有联系的,你接着往下看!
下订单的功能,实际上就是将顾客在订单页面中选择的商品信息保存到数据库中,下单就完成了。比如,用户在商品页面中选择了本例中的电子表、扩展坞、LED灯带,然后提交订单。
从开发的角度来说,提交订单的流程是这样的:
你会发现内存起到了临时存储订单信息的作用,内存建立起了界面和数据库的桥梁
我们知道数据库中是用 表 来存储订单信息的,那么内存中如何存储订单信息呢?
重点来了!
内存中是用对象存储订单信息的,订单中的每一个商品就是一个对象,每一个对象对应订单表中的一条记录,如下图:
对象和表有两种对应关系,专业术语叫做对象关系映射(ORM:Object Realtionship Mapping)
接下来你需要思考一个问题,内存中的三个对象是如何创建的呢?
答案是通过类创建的对象。
要想创建对象,必须先创建类,然后通过类实例化出对象。
如何创建类呢?
此时,你想一下类的概念是什么!
类是具有相同状态和相同行为的一组对象的集合。
所以,类是由属性和方法构成的。
本例中的三个商品都有 商品名称,单价,数量 三个属性,因此属于同一类。
分析到这里,订单类就出现了
类和表的对应关系
如何通过类创建对象呢?
创建对象的方法是**实例化**,通过实例化产生一个实例,实例就是对象
现在我们通过实例化来创建电子表、扩展坞、LED灯带三个对象
下面一行代码是实例化,看看是如何分配内存的
首先要知道对象由对象的引用和对象的实例构成
dianzibiao
就是对象的引用,对象的引用分配在栈中其次要知道new是在给谁分配内存,分配多大内存
三个商品实例化的内存图如下:
这幅图展示了创建三个对象,对象的引用分配在栈中,对象的实例分配在堆中,对象的引用指向对象的实例。
当执行 dianzibiao.price = 39 时,就是将39赋值到 dianzibiao指向的实例中的price属性中。
总结一下:
powered by kaifamiao