热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java程序设计第4周学习总结及注释应用的开发笔记

本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了201521123087 《Java程序设计》第4周学习总结相关的知识,希望对你有一定的参考价值。




1. 本周学习总结

 

2. 书面作业



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




  2. 面向对象设计(大作业1-非常重要)
    2.1 讲故事:将在网上商城购物或者在班级博客进行学习这一过程,讲述为一个故事。(不得少于50字)                                                                                                                                                                                                 小白登录淘宝,想买一本Java书,在搜索栏中输入了“Java”之后,再点击搜索,跳出了一个新的页面框,在各种各样的Java书中选择了一本看的最顺眼的,点击该商品进入后宝贝详情界面后,然后加入购物车,接着进入购物车结算,在结算界面,系统自动跳出这本Java书的价格以及可以使用的优惠,点击了付款,选择付款方式后输入密码,并完成了此次购物。

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


    2.3 尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)





 

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

这里的n,s,year,month,day都复用了Employee的已定义的内容。这里用到了super()经过查询super有3种用法
第一种:
super.xxx;(xxx为变量名或对象名)
这种方法意义为,获取父类中的名字为xxx的变量或方法引用。
使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作
第二种:
super.xxx();(xxx为方法名)
这种方法意义为,直接访问并调用父类中的方法。
第三种:
super();
这种方法意义为,调用父类的初始化方法,其实就是调用父类中的public xxx()方法


3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?                                                                                                                                                                                                                                         当子类和父类都有相同的字段,父类的a属性会隐藏起来。通过super调用。
3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。                                                                                                                                                                                                     调用的是Employee类的getSalary方法
3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?                                                                              若直接复制粘贴虽然看起来直观,但会显得代码过于冗长,不能一目了然。

 



  1. Object类
    4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?                                                                           因为输出一个对象,实则输出toString方法,所以提中是调用Fruit类的toString方法。
    4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)                      public String toString()
    {                                                                                                                                                                                                                                                                                                                                        return super.toString();                                                                                                                                                                                                                                                                                       

    4.3 Fruit类还继承了Object类的equals方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的equals方法是正确的)                                 public boolean equals(Fruit x,Fruit y) {                                                                                                                                                                                                                                                                                  if(x==y)return true;                                                                                                                                                                                                                                                                                                      else return false;                                                                                                                                                                                                                                                                                                            }                            
    4.4 在4.3的基础上使用ArrayList fruitList存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。请编写相关测试代码。并分析ArrayList的contains方法是如何实现其功能的?                                                                                       




  2. 代码阅读:EqualsTest.java(equals与hashCode)
    5.1 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因                                                                                                                                                                                                                     

     


    5.2 为Employee类的equals函数的每一行加中文注释。                                                                                                                                                                                                                                                                        

    首先,Person类是一个抽象类,无法实例化对象,因此只需分析Student类,Employee类,Manager类和Programmer类的toString()方法,可以发现其实也就是按部就班的输出成员变量,然后再利用super关键字调用父类Person类的toString()方法,得出运行结果,而Manager类和Programmer类继承Employee类,Employee类继承Person类,因此有两层toString()输出。


    5.3 为Manager类的equals函数的每一行加中文注释。并回答,编写子类的equals函数需要注意什么?                                                                                                                                                                                                          1)作用:调用父类的构造器; (2)不行,去掉后编译器会调用父类无参构造器,而PersonTest.java中没有无参构造器,会出现编译出错的情况。       
    5.4 对EmployeehashCode源代码,加中文注释。并结合数据结构中的知识,你觉得每个类中都有的hashCode方法有什么用?                                                                                                                                                                              首先,我们来看看ppt上对多态的定义

    而在PersonTest.java中,出现了以上两点情况,最明显的就是toString()方法,每个类的toString()方法都有不同的实现(如5.2代码运行结果所示),并且父类类型变量都可引用子类对象。




  3. 代码阅读:PersonTest.java(abstract、多态)
    6.1 画出类的继承关系
    6.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
    6.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
    6.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?





参考链接:PersonTest.java


3. 码云代码提交记录

 


4. PTA实验




    • 在做实验时应当多参考一下老师发的文档。
      学会使用super调用父类方法
      多试试以多态的方式来写代码










推荐阅读
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文详细探讨了Java命令行参数的概念、使用方法及在实际编程中的应用,包括如何通过命令行传递参数给Java程序,以及如何在Java程序中解析这些参数。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • Java 中重写与重载的区别
    本文详细解析了 Java 编程语言中重写(Override)和重载(Overload)的概念及其主要区别,帮助开发者更好地理解和应用这两种多态性机制。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 本文详细介绍如何在IntelliJ IDEA 14中打包Android应用APK文件,并提供查询SHA1值的具体步骤。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  • 本文详细介绍了如何在Python3环境中配置Appium1.4.6,并指导如何连接模拟器进行自动化测试。通过本文,您将了解从环境搭建到模拟器连接的完整流程。 ... [详细]
  • 解决vCenter vSphere HA初始化失败的问题
    本文探讨了在集群中遇到的所有vSphere HA主机状态显示‘无法正确安装或配置vSphere HA代理’错误的情况,并详细介绍了排查与解决步骤,包括检查HA初始化错误及安装HA代理的常见故障排除方法。 ... [详细]
author-avatar
許宸瑜_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有