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

    1. 本周学习总结

    1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结。

    注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的核心内容即可。
    注2:颜色要少、连线不要复杂,必要的时候要在连线上进行说明。
    1.2 可选:使用常规方法总结其他上课内容。

    2. 书面作业

    1. clone方法

    1.1 在test1包中编写Employee类,在test2包中新建一个Test类,并在其main中新建test1包中的Employee的对象,然后使用clone方法克隆一个新对象,能否成功?为什么?
    答:
    不能成功,查看clone源代码

    可以看到,clone方法被定义成protected,所以不能跨包调用访问。

    1.2 如果要为自定义的类覆盖clone方法,需注意什么?
    答:

    • 实现Cloneable接口
    • 调用super.clone()

    谨慎的覆盖clone()方法

    1.3 Object对象中的toString, equals, hashCode方法都使用public修饰,而clone方法却被protected修饰,请尝试解释原因。为什么不声明为public呢?
    答:
    这样做是考虑到了安全,为了不让原来对象的引用发生改变,才把修饰符定义为
    protected,这样想要在其他任何地方调用这个类的clone方法,这个类就必须去重写clone方法并且把修饰符改为public,这样在任何地方都可以调用这个类的clone方法了。

    参考 Object类中clone()方法的修饰符为什么是protected

    2. 内部类

    2.1 使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目7-2。请贴图关键代码与运行结果,请在运行结果中出现你的学号与姓名。
    答:
    改写:

    2.2. 分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?

    Comparator<Shape> shapeComparator = new Comparator<Shape>() {
     @Override 
     public int compare(Shape o1, Shape o2) { 
     //你的代码
     } 
    }
    

    答:
    shapeComparator使用匿名内部类实现了Comparator接口,重写了Comparator中的compare方法。

    2.3 题集:6-1(匿名内部类)实验总结。你觉得使用匿名内部类有什么好处?
    答:
    题目定义好的不要重复定义......
    好处就是节省空间,使代码看上去简洁清楚。

    参考
    有关内部类

    3. PTA实验总结

    3.1 PTA(自定义接口)。并回答:相比较不写接口,直接写一个类包含IntegerStack相应的方法来说,定义IntegerStack接口,然后定义其实现类这种方式有什么好处?
    答:
    重新回顾有关栈的知识(栈空、栈满......)。
    将IntegerStack定义为接口,再定义其实现类的好处就是:对于某种功能,我们可以用多种方式来实现来存储数据。

    3.2 PTA(静态内部类)。并回答:你觉得什么时候应该使用静态内部类?静态内部类与内部类有什么区别?
    答:

    两者相比,区别就在于静态内部类没有了指向外部的引用。除此之外,在任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类,不过静态内部类中却可以拥有这一切。这也算是两者的第二个区别。
    参考2.3所附链接

    3.3 PTA(继承覆盖综合练习-Person、Student、Employee、Company)。并回答:使用Collections.sort对引用类型数组进行排序需要有一个什么前提条件?
    答:
    使用Collections.sort对引用类型数组进行排序需要有一个什么前提条件:

    • 实现一个比较接口(Comparable与Comparator)
    • 分别重写compareTo方法和compare方法

    4.大作业-继续完善(尝试使用接口改造你们的系统)

    假设在不同的实现中,购物车里的商品有的是存放在ArrayList,有的是存放在数组中。
    4.1 现在希望将系统中购物车的操作抽象到相应的DAO接口。
    答:

    4.2 为该接口定义至少两个实现(如数组、列表、文件)。截图自己负责部分的关键代码,要求出现名字与学号。
    答:

    4.3 给出你们的Main程序,说明定义DAO接口的好处。
    答:

    定义并实现了这个接口,就可使用不同的方法来实现数据的存储,进而实现多种需求。比如这里通过了DAO接口分别用两个类来实现(分别用列表和数组来存储数据)。

    5. 代码阅读:PersonTest.java(abstract、多态、super)

    5.1 画出类的继承关系

    5.2 main函数的代码实现什么功能?
    答:
    按照年龄对人员进行升序排序

    5.3 如果将子类中的super构造函数去掉行不行?
    答:不行,super是用来访问调用父类的属性、方法、构造函数,

    注意: 子类调用父类的构造方法时,super语句必须是子类构造方法的第一句

    若没有suoer,则会报错:

    5.4 PersonTest.java中哪里体现了多态?
    答:
    Person类、Student类、Employee类、Manager类、Programmer类中都有toString方法,这种方法覆盖是多态的体现。

    3.码云及PTA

    题集:jmu-Java-04-面向对象2-进阶-多态接口内部类

    3.1. 码云代码提交记录

    3.2 截图PTA题集完成情况图

    3.3 统计本周完成的代码量

    周次 总代码量 新增代码量 总文件数 新增文件数
    1 0 0 0 0
    2 0 0 0 0
    3 619 619 12 12
    4 619 0 12 0
    5 970 351 17 5
    6 1118 148 25 8
    7 1231 113 28 3
  • 相关阅读:
    Powershell数据处理
    Powershell About Active Directory Group Membership of a domain user
    Powershell About Active Directory Server
    Oracle Schema Objects——Tables——TableStorage
    Oracle Schema Objects——Tables——TableType
    English Grammar
    Oracle Database Documentation
    Oracle Schema Objects——Tables——Oracle Data Types
    Oracle Schema Objects——Tables——Overview of Tables
    What is Grammar?
  • 原文地址:https://www.cnblogs.com/chqing/p/7745574.html
Copyright © 2011-2022 走看看