一、类的继承、多态性使用方法以及接口的应用
1. 什么是继承:继承好比父亲和儿子,儿子继承父亲(class a extends class b),b就是父亲,a就是儿子。儿子具有父亲的属性。而父亲使用儿子的属性依然要创建对象。父亲的私有属性对儿子是封闭的,子类不能直接使用父亲的私有属性。
应该将私有属性改为protect或static。
2.什么是多态:多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。实现多态有两种,重写(override)和重载(overload)。
3.接口的应用:接口是class类实现代码简化的重要方法,接口只能被实现不能继承。
二:分析题目集:
①题目集7(7-1):https://images.ptausercontent.com/f52db597-70a8-4cf0-8e8c-5caf8f081cfd.pdf
定义5个类:4个图形类,1个数据处理类,用来显示结果和处理事件,图形类继承数据处理类。
①题目集7(7-2):HashMap使用:HashMap输出自带{};
②题目集8:ATM机:https://images.ptausercontent.com/93fc7ad6-5e85-445a-a759-5790d0baab28.pdf
源码:https://www.kdocs.cn/l/cdnELkSXWd0W
分析:创建账户类,账户类里面放各个用户的卡号,密码,余额等,在处理类实现判断并输出,账户类继承自处理类,这样程序耦合度较低,但我的源码处理类里的validate()方法耦合度就高了,创建新的用户时,判断他的卡号密码等条件时需要较大的改动。建议不要将输入的判断条件放在处理类中,在各个账户类中新添判断方法,重写处理类的判断方法。
部分代码修改:https://www.kdocs.cn/l/cu4yAfqiUQfo
将判断各个用户卡号、密码、余额操作放到各个用户判断中。
②题目集9:对于新增用户的处理和跨行处理。
如何处理:1.在判断方法已经放到账户类之后,新添跨行处理方法在处理类中KuaHang();
2.输入格式问题:我的思路是将输入表示为字符串,在将每一行的字符串按空格分隔开来,在将卡号,密码,ATM机编号等信息依次存入到不同的ArrayList列表中。
设计思路:将处理输入格式,判断输入是否合法,用户信息三样分离开,用户信息增添与其他各项互不干扰,便于代码的改进。
三:踩坑心得:
例:题目集7-2:踩坑1:使用了hashmap,hashmap的key不清楚,浪费了大量时间搞明白排序问题。
踩坑2:public static String k(){}方法的返回和构造函数一样,一旦创建对象,就会执行,这是错误的观念,虽然没什么影响;
题目集8:这是我最要吐槽的,我使用了ArrayList的数组类型,ArrayList a[]=new ArrayList[100];但是后期使用时一直报错:
后来知道了ArrayList类型的数组没有申明:
这个麻烦困扰了我许久才得以解决。
四:改进建议:
1.程序耦合度太高了,比如题目集7的,但凡需要一点点变动就需要大动笔墨,主要原因还是没有将程序分隔开来,类的定义功能不明确。
五:总结:
通过这三次题目集,让我深刻认识到开闭原则的总要性,特别是题目集9的改动。除此之外,我还知道了什么是继承,接口的好处。我认为,java程序最重要的还是认识到开闭原则,低耦合,private的使用,今后的程序应该更看好低耦合,要明确每一个方法的功能,对每一个方法名的使用要让别人看的懂,java是一个面向对象的语言,可读性是检验工程师好坏的一个总要环节。