热门标签 | 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调用父类方法
      多试试以多态的方式来写代码










推荐阅读
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
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社区 版权所有