zoukankan      html  css  js  c++  java
  • 201521123002 《Java程序设计》第4周学习总结


    1. 本周学习总结

    2. 书面作业

    1.注释的应用
    使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)

    参考文章
    Eclipse添加注释简介
    Eclipse注释模板设置详解
    答:进行注释主要有两种方法:
    1.一种是老师上课用到的手动注释再运用一些标签

    显然这样有些麻烦。有没有自动生成的办法呢?回答是有的。
    2.把光标放在要注释的类或方法上,按快捷键alt+shift+jor source》Generate Element Comment,但是这样的注释格式是系统默认的较为粗暴简单,没关系我们还可以自己进行格式修改。
    打开:Window->Preference->Java->Code Style->Code Template 然后展开Comments节点,选中你要添加注释的类型,然后点击edit

    在pattern里按“ctrl“+”/”键,选择要添加的种类,例如日期,作者、时间、返回类型等等……
    设置好以后,会在上图的pattern下生成相应代码

    现在用方法二来对之前写过的类和方法进行注释
    对Rectangle类进行注释
    对setname方法进行注释
    对getPerimeter方法进行注释

    2.面向对象设计(大作业1,非常重要)
    2.1将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)

    答:最近在学习java,决定上当当网上买一些参考书,在搜索栏输入java,就会出现8050本有关java的书籍,点击一本查看具体信息,有书名、作者、价格、出版社、出版日期还有简介,觉得这本书不错加入购物车,想多了解一下这个作者的其他书籍,点击作者弹出一个界面显现作者其他的书籍,又选了一本加入购物车。点击购物车,就会看到刚刚选中的书本,发现总价有点贵,打算先买最想要的那本,点击删除了一本书。点击结算,弹出订单界面要求输入收货地址,提交订单,支付。

    2.2通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。

    答:如图

    2.3尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)
    参考资料:
    UML类图
    面向对象案例-借款者姓名地址.zip

    3.ManagerTest.zip代码分析
    分析ManagerTest.zip中的代码,回答几个问题:
    3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。

    答:Manager类 extends Employee类,
    复用的方法:

    图中super可知服用了父类的

    复用的属性:

    3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?

    答:用super来区分getSalary(),super.getSalary()是父类的。

    3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。

    答:ppt中有这样一句话

    对于子类重写的方法,JVM根据调用该方法的实际对象的类型来决定选择调用哪个方法。

    现在我们具体分析所给材料:

    可知对于staff[0]调用的是Manager的getSalary方法,staff[1]、[2]调用的是Employee中的getSalary方法。

    3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?

    答:我们使用继承就是为了避免代码的冗长,用super可是使代码变得更叫简洁而且提高了代码的效率,学到目前尚未发现用super有什么坏处。

    4.Object类
    4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?

    答:这种题目就放到eclipse里试一下

    结果显示:

    如过没有继承任何类,则继承的是Object类,Object类是所有类的父类,Fruit调用的是Object本身的toString方法。
    查看Object本身的toString方法的源代码:

    输出对象所属的类名和散列码。

    4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)

    答:用eclipse自动生成一个toString方法,如果要用父类的toString方法,可以用super这个关键字

    结果为:

    4.3 Fruit类还继承了Object类的eqauls方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的eqauls方法是正确的)

    答:查看源代码

    Object类中equals方法用来判断两个对象是否具有相同的引用。
    然而,对多数类来说这种判断意义不大。
    所以子类经常覆盖其equals方法,对其内容进行比对。
    编写equals有两种方法一种可与用eclipse自动生成但是它还需要稍微的修改一下,不然不会忽略大小写,另一种就是自己编写啦

    public boolean equals(Object object) {
    		if (this == object)
    			return true;
    		if (!(object instanceof Fruit))
    			return false;
    		Fruit fruit = (Fruit) object;
    		if (this.name == null) {
    			if (fruit.name != null)
    				return false;
    		} else if (!this.name.equalsIgnoreCase(fruit.name))
    			return false;
    		return true;
    	}
    

    运行结果

    5.代码阅读:PersonTest.java(abstract、多态)
    5.1 画出类的继承关系

    5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因

    答:运行不出来
    那就说说自己的分析结果
    创建一个长度为4的Person数组,age升序
    Student类和Employee类是继承自Person类,而Manager类和Programmer类是继承自Employee类的,
    那么Manager类和Programmer类有两成嵌套

    5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?

    答:super构造函数是调用了父类的构造函数,不可以,会出现错误,因为去掉super本来可以调用父类的无参构造函数,但是没有无参构造函数所以会出现错误

    5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?

    答:这里体现了多态

    如果说我觉得多态有什么好处,一时半会好像还说不上来,可能是更灵活,代码不会显的太过冗长,提高代码效率等,查查资料发现那些讲的概念对我来说还是有些抽象,继续学习吧
    多态来自继承,是继承的发展,继承是子类继承父类,而多态是父类的引用可以调用子类的对象。

    参考文件:PersonTest.java

    3. 使用码云管理Java代码

    4. 实验总结

    题目集:jmu-Java-03-面向对象1-基础-封装继承 中的
    函数(4-1, 4-2, 4-3,4-4较难选做)

    编程(5-4, 5-5, 5-6)

    这次题目看起来有点多,但是认真去做还是发现不会特别难,
    1.都是对新学的内容的巩固,这题用到了继承,可以抽象一个类,然后运用sumAllArea和sumAllPerimeter方法。
    2.这题按照题目要求认认真真一步一步下来就好,其中eclipse可生成很多的代码节省了不少时间,然后对contain方法也进一步熟悉,但是输出格式还是有些问题,比如eclipse自动生成的是按照属性从上到下的顺序,但是如果我编写的时候没有按照输出的格式编写就会导致输出错误。这个问题还是比较难发现的,所以要小心。
    3.没什么大问题,就是对覆盖的熟悉吧,慢慢做,一步一步来。
    
  • 相关阅读:
    HDU 2433 Travel (最短路,BFS,变形)
    HDU 2544 最短路 (最短路,spfa)
    HDU 2063 过山车 (最大匹配,匈牙利算法)
    HDU 1150 Machine Schedule (最小覆盖,匈牙利算法)
    290 Word Pattern 单词模式
    289 Game of Life 生命的游戏
    287 Find the Duplicate Number 寻找重复数
    283 Move Zeroes 移动零
    282 Expression Add Operators 给表达式添加运算符
    279 Perfect Squares 完美平方数
  • 原文地址:https://www.cnblogs.com/lch9/p/6562285.html
Copyright © 2011-2022 走看看