类和对象 封装 继承 多态

  1. 类和对象

类:事物的抽象,对象:事物的具体化

  1. 面向对象的三大特性

封装 继承 多态

  1. 封装
  1. 把所有的属性私有化private
  2. 对需要开放读取或者修改的属性使用getter或者setter方法
  3. 本类中某个方法调用,使用当前类实例this, 在其它类中调用,一般需要实例化,使用实例化后的对象名称,使用get方法获取私有属性,或者使用set方法对属性赋值
  1. extends

继承,分访问控制符,public,protected修饰的方法可以继承下来,对于private修饰的属性和方法是无法继承的。

  注意:

1、构造函数继承不了的。需要继承使用super

2、Java的类继承是一个单继承,不是多继承

实现继承时需要一个继承的链,在类中extends后面只可以一个类  

  1. 多态

多种状态

向上转化,向下转化

  1. 构造函数 
  1. 与类同名
  2. 有不同的参数,也可以无参
  3. 类中没有构造函数,调用时也可以实例化。
  1. 重载和重写

重载:同一个函数名,不同的参数(类型,数目)

重写:发生在extends,当某个方法满足不了子类要求,进行Override关键字的重写。

  1. 属性和方法

属性:类中的变量,叫成员变量

方法:类中的函数 

  1. 面向对象的编程思想:
  1. 封装成几个类,如何封装(private变量,getter,setter,无参构造,有参构造)
  2. 根据逻辑确定类中的方法
  3. 在主类中进行类的实例化,进行实例化的属性和方法的调用.

先完善程序:加入购物车

逻辑:

1\进入商品模块,点击”加入购物车”

需要多个商品,这里只限定5个(数组:定长)  

这里多次输入商品和商品数量(限定最多只能买5个)

经过分析,一个类只能定义一个地址,不能执行addcar放在一个购物车中,因为不同地址的addcar没有统一的对象存放。

解决方法:

  1. 主类定义一个购物车的数组,存放每一个用户输入的内容。最后主类给订单结算,再调用订单。

注意画逻辑图:

在这个逻辑图中,多个商品模块的addcar都要放在一个购物车中。主类定义一个数组代替购物车,相当于把购物车的逻辑送给主类中,购物车没有划分出来,不满足面向对象的思想。 经过分析,在电商模块,一定存在购物车模块。

  1. 把购物车分离出来,由另外一个类去完成购物车。

重新定义一个类MyCart

实现封装,需要属性和方法,

属性:购物车存放多个商品,存放多个数据的只能是数组,数组是定长,规定只放5个商品,属性类型是数组,数组中存放的是每一个商品,数组中每个元素的类型就是商品类。变量名就是cart   

根据逻辑,getter获取购物车数据是需要的,setter修改成加入购物车。

加入购物车的按钮在商品模块中。

注意:

  1. 数组的打印使用Arrays.toString()

如果这个数组是对象数组,是一个商品数组,商品是一个类,所以是对象数组,写Arrays.toString()时报错

不能转化的原因是mycart是一个购物车的类,类中有数组,需要调用类中的数组。

调用类中的数组,因为对象是一个地址,打印的还是一个地址。

如果想去打印数据,每个对象都有一个toString方法,需要重写toString()方法

第一步:右键:generator

在出现的菜单上选择“to String”

在出现的对话框中直接ok即可。

就可以要打印字符中信息了,但是这里放了5个

其实操作中只放了一个,结果打印了五个。证明在加入购物车中有代码bug

注意:

这里有一个多态的转化,定义时实例化MyPay,在购物车中放的MyGoods.最后可以显示MyGoods的内容。

清楚:

这里加入购物车需要用到while(true)一直购买。就需要一个标志用户购买行为结束。

订单结束,用户购买行为结束,(一般行为,形成订单后,不付款,在一定时间内订单关闭,订单可以不支付)

支付结束,用户购买行为结束。(支付行为不一定是最后的行为)

总结:

一个用户购买行为的结束,应该是由订单决定的,只要订单结算,这个订单就关闭了,要么就是后面的支付,要么就是取消定单.

注意:订单(淘宝:买家付款,卖家发货,买家收货,评论,订单关闭)

在自己的订单中,少了这个状态,少这个状态没有办法做定单关闭.解决立即购买和加入购物车之间的切换问题,理解订单的状态.需要订单类中多加一个属性status.

加入购物车后,最终生成订单的按钮在购物车中,生成订单的按钮的功能应该是在购物车类中.

购物车:

1\多加一个购物车类

2\订单的状态位,确定立即购买还是加入购物车

3\到支付订单,根据总价的值来进行立即购买和加入购物车的判定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值