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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Angular面试题_angular面试

    Angular面试题_angular面试1.angular的数据绑定采用什么机制?详述原理答案:脏检查机制。解析:双向数据绑定是AngularJS的核心机制之一。当view中有任何数据变化时,会更新到model,当model中数据有变化时,view也会同步更新,显然,这需要一个监控。原理就是,Angular在scope模型上设置了一个监听队列,用来监听数据变化并更新view。每次绑定一个东西到view上时AngularJS就会往$watch队列里插入一条$watch,用来检测它监视的mode

    2022年10月18日
  • tess4j正确的使用 OCR

    tess4j正确的使用 OCR在官网上下载下来的tess4j的zip,初见时看的云里雾里的,原以为是个jar,直接引用就好了,结果竟是个zip。网上查一下用法,各种说法,各种菜,全是误导,自己不懂就敢瞎说…实际上使用时需要注意一下几点:一、引jar包打开压缩包,在dist下边有tess4j的jar,这个jar包在lib下也可以找到,这是关键jar。此外还需要其他好多依赖jar包,这些都可以在lib下找到。l

  • MySQL数据库面试题(2020最新版)

    MySQL数据库面试题(2020最新版)文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)…

  • log4cpp学习

    log4cpp学习1、linux下log4cpp的下载安装配置http://log4cpp.sourceforge.net/官方网站有下载地址,安装过程配置选项及测试用例。将下载好的tar包解压到/usr/local/下运行./configure(如有需要添加相关配置选项),使用make编译,使用makecheck进行检测,使用makeinstall安装,使用之前的相关命令安装好之后在/usr

  • 如何写好单元测试:Mock脱离数据库+不使用@SpringBootTest「建议收藏」

    如何写好单元测试:Mock脱离数据库+不使用@SpringBootTest「建议收藏」目录1、一般的单元测试写法2、单元测试步骤3、对一般的单元测试写法分析优化4、最佳的单元测试写法:Mock脱离数据库+不启动Spring+优化测试速度+不引入项目组件一、普遍的单元测试方法作为一个Java后端程序员,肯定需要写单元测试。我先提供一个典型的错误的单元测试例子:@RunWith(SpringRunner.class)@SpringBootTest(cla…

发表回复

您的电子邮箱地址不会被公开。

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