201621123075 week06-接口、内部类

201621123075 week06-接口、内部类

大家好,又见面了,我是全栈君。

1.本周学习总结

1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结。
注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的核心内容即可。
注2:颜色要少、连线不要复杂,必要的时候要在连线上进行说明。
1120964-20171027160410711-1374540332.png
1.2 可选:使用常规方法总结其他上课内容。

  • final修饰的属性和变量的值不会改变
  • 重载指的是类名相同但参数不同

    2. 书面作业

1. clone方法

1.1 在test1包中编写Employee类,在test2包中新建一个Test类,并在其main中新建test1包中的Employee的对象,然后使用clone方法克隆一个新对象,能否成功?为什么?
不能成功。理由:因为Object.clone()中是“Protected”,它是无法被其他类访问的。
1.2 如果要为自定义的类覆盖clone方法,需注意什么?
首先要实现Cloneable接口,然后调用super.clone。
1.3 Object对象中的toString, equals, hashCode方法都使用public修饰,而clone方法却被protected修饰,请尝试解释原因。为什么不声明为public呢?
使用protected修饰可以保护成员,而public完全公开。使用protected可以保护其他类使用clone的方法和变量

2. 内部类

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

2.2. 分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?
Comparator<Shape> shapeComparator = new Comparator<Shape>() { @Override public int compare(Shape o1, Shape o2) { //你的代码 } }
shapeComparator重写实现了Comparato的接口,
2.3 题集:6-1(匿名内部类)实验总结。你觉得使用匿名内部类有什么好处?

  • 直接new一个新的ActiongListenner,然后再里面for循环写出这个方法
  • 好处:不用再用另一个类来写方法代码,节约时间

    3. PTA实验总结

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

  • 要使用interface定义接口才能用implements实现它
  • 那个栈的操作方法还是没用好,这题还是没通过。
  • 好处:定义成接口可以用多种方法,多种形式去实现它。
    3.2 PTA(静态内部类)。并回答:你觉得什么时候应该使用静态内部类?静态内部类与内部类有什么区别?
  • 当内部类和外部类有所联系的时候,就可以使用静态内部类
    区别:
  • 静态内部类有静态属性或方法
  • 静态内部类可以访问外部类的静态成员和方法,内部类可以访问外部类所有的成员和方法
    3.3 PTA(继承覆盖综合练习-Person、Student、Employee、Company)。并回答:使用Collections.sort对引用类型数组进行排序需要有一个什么前提条件?
    实验总结:
  • 子类继承父类用super.()复用代码
  • equals的方法写不出来
    前提条件:
  • 实现比较的接口并重写它的方法

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

参考Case-StudentDao.zip案例
假设在不同的实现中,购物车里的商品有的是存放在ArrayList,有的是存放在数组中。
4.1 现在希望将系统中购物车的操作抽象到相应的DAO接口。
1120964-20171028120759555-960645777.png

4.2 为该接口定义至少两个实现(如数组、列表、文件)。截图自己负责部分的关键代码,要求出现名字与学号。
我写的数组实现:
1120964-20171028120856164-2145021590.png
同伴写的列表实现:
1120964-20171028120935133-1466313249.png

4.3 给出你们的Main程序,说明定义DAO接口的好处。
1120964-20171028125136023-610030006.png
Dao好处:
可以用多种方法其实现它的功能,并且便于修改内容。很容易看到接口实现的功能

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

5.1 画出类的继承关系
1120964-20171028130257961-1696409687.png

5.2 main函数的代码实现什么功能?
创建了Employee、student、Programmer、Mannager四个对象,对他们进行排序,最后输出
5.3 如果将子类中的super构造函数去掉行不行?
不行,子类用super函数继承父类的属性及方法
5.4 PersonTest.java中哪里体现了多态?
Person类、Student类、Employee类还有Manager以及Programmer类都具有不同形式的toString体现了多态性
参考链接:

PersonTest.java

3.码云及PTA

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

3.1. 码云代码提交记录

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

3.2 截图PTA题集完成情况图

需要有两张图(1. 排名图。2.PTA提交列表图)
1120964-20171028132456367-1458021922.png

1120964-20171028132447086-510773050.png

3.3 统计本周完成的代码量

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

周次 总代码量 新增代码量 总文件数 新增文件数
1 0 0 0 0
2 265 265 9 9
3 326 61 8 -1
4 0 0 0 0
5 187 187 6 -2
6 209 22 6 0
7 174 -35 4 -2

1120964-20171028132311508-606065580.png

转载于:https://www.cnblogs.com/xjm123456/p/7745101.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108077.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java生成pfx证书[通俗易懂]

    java生成pfx证书[通俗易懂]packagecom.zrsf.cert;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.mat

    2022年6月3日
    233
  • OpenProcessToken令牌函数用法「建议收藏」

    OpenProcessToken令牌函数用法「建议收藏」>GetCurrentProcessID得到当前进程的IDOpenProcessToken得到进程的令牌句柄LookupPrivilegeValue查询进程的权限AdjustTokenPrivileges调整令牌权限要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关的访问权的OpenProcess操作,只要当前进程具有SeDeDebug权限就可以了。要是一个用户是Admin

    2022年6月25日
    22
  • 归并排序 详解「建议收藏」

    归并排序 详解「建议收藏」注:内容,图片来自于慕课网liuyubobobo老师的课程。算法复杂度:O(nlogn);也许有很多同学说,原来也学过很多O(n^2)或者O(n^3)的排序算法,有的可能优化一下能到O(n)的时间复杂度,但是在计算机中都是很快的执行完了,没有看出来算法优化的步骤,那么我想说有可能是你当时使用的测试用例太小了,我们可以简单的做一下比较:当数据量很大的时候nlogn的优势将会比…

    2022年8月12日
    3
  • amazement的用法_release的用法

    amazement的用法_release的用法Mutex中提供了WiteOne,ReleaseMutex两个实例方法~WiteOne的作用是”阻塞当前线程,提供对该线程的原子操作”也就是说当一个线程遇到WiteOne的时候,如果在WiteOne里面没有线程在操作,则此线程进去操作而里面有线程的时候,所有到此的线程均需要排队等候里面的线程执行完毕~而控制这样操作的结束标记就是使用ReleaseMutex方法!就好比WiteO…

    2022年4月19日
    50
  • JAVA 输入输出

    JAVA 输入输出JAVA输入输出

    2022年5月9日
    33
  • AE常用表达式汇总「建议收藏」

    很多朋友面对AE表达式望而生畏,不过再难的东西都会有它最本质的规则,如果你理解了基本的原理和常用的表达式命令,这也许会提高你的工作效率。我通过自己对AE表达式的理解,尝试用最简单的语言解释一些看似复杂的操作,如果此篇文章能给你带来一些启发,不胜荣幸~首先什么是表达式呢?表达式就是AE内部基于JS编程语言开发的编辑工具,可以理解为简单的编程,不过没有编程那么复杂。其次表达式只能添加在可以编辑的关建帧的属性上,不可以添加在其他地方;表达式的使用根据实际情况来决定,如果关键帧可以更好的实现你想要的效果,使

    2022年4月6日
    352

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号