zoukankan      html  css  js  c++  java
  • 201621044079WEEK06接口、内部类

    作业06-接口、内部类

    1. 本周学习总结

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

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

    1.2 可选:使用常规方法总结其他上课内容。

    2. 书面作业

    1. clone方法

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



    不能成功 因为clone()方法是用protected 修饰的 只能对于test1 包内可见 在test2 包内是不可见的 如果将方法用public 修饰 即可成功

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

    Object对象中的clone方法是被protected修饰,如果要在子类中覆盖clone方法,则该方法要被public修饰。
    还需要实现Cloneable接口!

    1.3 Object对象中的toString, equals, hashCode方法都使用public修饰,而clone方法却被protected修饰,请尝试解释原因。为什么不声明为public呢?

    用protected修饰clone方法 主要是为了实现让子类从新去屑方法 实现深拷贝 防止在其他任何地方随意的调用 修改而导致了对于原来对象造成影响

    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) { //你的代码 } };此处输入代码
    shapeComarator实现了Comparator接口 让这个对象能够使用Arrary.sort()方法排序
    2.3 题集:6-1(匿名内部类)实验总结。你觉得使用匿名内部类有什么好处?
    匿名内部类就是没有名字的内部类 匿名类只能够用一次 就是通常用来简化代码
    但是使用匿名内部类需要有一个前提条件 就是必须要继承一个父类或者实现一个接口
    比如当我们用child类继承person类 但是我们只实现child类的一个类 这样的话我们单独去编写一个类很麻烦 所以我们用匿名内部类 就可以减少代码量

    3. PTA实验总结

    3.1 PTA(自定义接口)。并回答:相比较不写接口,直接写一个类包含IntegerStack相应的方法来说,定义IntegerStack接口,然后定义其实现类这种方式有什么好处?

    如果把IntegerStack定义为接口我们可以用多种形式去实现,可以使用数组,也可以使用列表来实现。

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

    两者在逻辑关系上声明都是在一个类的内部,但是想能够保证持续存在,并且能够给别的别的类随时调用的类,可以声明为静态内部类。
    静态内部类属于类而不属于实例,是一直存在并且随时可以通过类名进行调用。

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

    Collections.sort对引用类型数组进行排序的前提条件就是必须要实现一个接口 比如说Comparable 而且要重新编写比较方法

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

    参考Case-StudentDao.zip案例
    假设在不同的实现中,购物车里的商品有的是存放在ArrayList,有的是存放在数组中。

    4.1 现在希望将系统中购物车的操作抽象到相应的DAO接口。

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

    数组

    列表

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


    方便操作 更有灵活性 用不同的方式定义方法

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

    5.1 画出类的继承关系

    5.2 main函数的代码实现什么功能?

    对四个对象按年龄大小进行升序排序

    5.3 如果将子类中的super构造函数去掉行不行?

    不可以 子类是不能够继承private 也没有办法继承构造函数 所以我们必须要用到super 去调用父类的构造函数

    5.4 PersonTest.java中哪里体现了多态?

    在文件里 对于四个类 Person类 Student类 Employee类 以及Manager类和Programmer类里面的toString方法覆盖体现了多态性
    参考链接:

    PersonTest.java

    3.码云及PTA



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

    3.1. 码云代码提交记录

    在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

    3.2 截图PTA题集完成情况图

    需要有两张图(1. 排名图。2.PTA提交列表图)

    3.3 统计本周完成的代码量

    需要将每周的代码统计情况融合到一张表中。

    周次 总代码量 新增代码量 总文件数 新增文件数
    1 0 0 0 0
    2 0 0 0 0
    3 386 386 5 5
    4 882 496 11 6
    5 1476 594 18 7
    6 1982 506 23 5
  • 相关阅读:
    Oracle基础知识整理
    linux下yum安装redis以及使用
    mybatis 学习四 源码分析 mybatis如何执行的一条sql
    mybatis 学习三 mapper xml 配置信息
    mybatis 学习二 conf xml 配置信息
    mybatis 学习一 总体概述
    oracle sql 语句 示例
    jdbc 新认识
    eclipse tomcat 无法加载导入的web项目,There are no resources that can be added or removed from the server. .
    一些常用算法(持续更新)
  • 原文地址:https://www.cnblogs.com/HYSOUL/p/7746850.html
Copyright © 2011-2022 走看看