1.本周学习总结

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


2.书面作业

2.1clone方法

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

  • 不成功;clone方法为Object对象protected Object clone();protected不能被不同包的非子类访问,因而使用clone方法克隆一个新对象需要重写clone方法

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

  • 覆盖clone方法,声明为public,并调用super.clone()
  • 实现cloneable接口

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

  • 出于访问权限的安全性的考虑,clone方法被protected修饰,其实现了浅拷贝,没有克隆包含在对象中的其他引用型属性;如果实现clone方法还能修改对象,那么这样的实现方法则十分不安全

2.2内部类

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

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

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

  • shapeComparator所指向的对象使用匿名内部类实现Comparator,通过重写compare方法,实现Shape o1与Shape o2之间的比较

2.2.3题集:6-1(匿名内部类)实验总结。你觉得使用匿名内部类有什么好处?

  • 函数题最重要的是审题--Mastarter匿名内部类已写,我们要写的是ActionListener类(按题意要求编写)

ActionListener ac = new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

for(int i=0;i<n;i++){

System.out.println(x);

}

System.out.println(this.getClass().getName());

System.out.println(Arrays.toString(this.getClass().getInterfaces()));

}

};

  • 使用匿名内部类的好处的在于节省代码空间,减少冗余

2.3 PTA实验总结

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

  • 要及时回顾栈的知识点(栈满、栈空、进栈、出栈以及取栈顶);定义IntegerStack接口,然后定义其实现类可以根据不同数据类型,实现不同的方法

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

  • 调用静态内部类时调用格式ArrayUtils.PairResult P = new ArrayUtils.PairResult();P = A.findMinMax(d);

  • 静态内部类便于进行代码测试

  • 从技术上说静态内部类不属于内部类。因为内部类与外部类共享一种特殊关系,更确切的说对实例的共享关系;而静态内部类则没有上述关系,它只是位置在另一个类的内部

定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现特定的接口。外部类按常规的类访问方式使用内部 类,唯一的差别是外部类可以访问内部类的所有方法与属性,包括私有方法与属性。

定义静态内部类:在定义内部类的时候,可以在其前面加上一个权限修饰符static。此时这个内部类就变为了静态内部类。

通常称为嵌套类,当内部类是static时,意味着:

[1]要创建嵌套类的对象,并不需要其外围类的对象;

[2]不能从嵌套类的对象中访问非静态的外围类对象(不能够从静态内部类的对象中访问外部类的非静态成员);

嵌套类与普通的内部类还有一个区别:普通内部类的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段, 也不能包含嵌套类。但是在嵌套类里可以包含所有这些东西。也就是说,在非静态内部类中不可以声明静态成员,只有将某个内部类修饰为静态类,然后才能够在这 个类中定义静态的成员变量与成员方法。

参考资料

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

  • 继承覆盖综合练习与2.5题相似,按要求写Person、Student、Employee、Company类

    class Student extends Person class Employee extends Person

    Main函数实现名字(名字相同后年龄)比较升序

    if(p1.name.compareTo(p2.name)==0){

    if(p1.age>p2.age)

    return 1;

    else if(p1.age<p2.age)

    return -1;

    else

    return 0;

    }

  • Collections.sort对引用类型数组进行排序需要对比较接口进行重写方法

    Comparable接口实现compareTo方法

    Comparator接口实现compare方法

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

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

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

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

  • 定义DAO接口实现数据不同的存储类型形式

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

2.5.1画出类的继承关系

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

  • main函数的代码实现功能:将创建的四个对象按照Age年龄升序排列

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

  • 不可以,super实现对父类构造函数的调用

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

  • 在所有的类中(Person类、Student类、Employee类、Manager类、Programmer类)均实现toString()方法的覆盖


3.码云及PTA

3.1. 码云代码提交记录

3.2 截图PTA题集完成情况图

3.3 统计本周完成的代码量

周次 总代码量 新增代码量 总文件数 新增文件数
第一周 189 189 10 10
第二周 304 304 9 9
第三周 557 557 10 10
第四周 621 621 8 8
第五周 326 326 7 7
第六周 972 972 12 12

最新文章

  1. Ionic + Cordova 跨平台移动开发环境配置
  2. Validate Disk Failover Failed
  3. Jfinal中定时器的初步探索(二)
  4. Getting started with SciPy for .NET
  5. 提供一个免费的CSDN下载账号
  6. Perl的主要应用领域
  7. Docker系列(三)常用命令
  8. Java 计算文件大小
  9. LRU 缓冲池 (不考虑多线程)
  10. beini系列_2_beini装入虚拟机
  11. sql执行时间过长,请高手指点!
  12. [DeeplearningAI笔记]改善深层神经网络_优化算法2.3_2.5_带修正偏差的指数加权平均
  13. 前端插件之Bootstrap Switch 选择框开关控制
  14. pandas数据表
  15. 使用iTEXT库生成pdf
  16. SQL SERVER 如果判断text类型数据不为空
  17. pm2 知识点
  18. 在Eclipse里静态导入
  19. ZooKeeper学习2---ZooKeeper安装配置
  20. listagg wm_concat 行转列

热门文章

  1. C#图解教程 第七章 类和继承
  2. C#图解教程 第二十章 异步编程
  3. C# 程序员最常犯的 10 个错误(转)
  4. Python基础__Python序列基本类型及其操作(1)
  5. 【BZOJ1013】球形空间产生器(高斯消元)
  6. 【BZOJ1500】【NOI2005】维修数列(Splay)
  7. 【BZOJ3531】旅行(树链剖分,线段树)
  8. POJ 1791 Heavy Transportation(最大生成树)
  9. [翻译]简单的实现一个Promise
  10. ES2015 类中的静态方法