zoukankan      html  css  js  c++  java
  • 20182330 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结

    20182330 2019-2020-1 《数据结构与面向对象程序设计》第五周学习总结

    教材学习内容总结

    1. 继承:在父类和子类之间建立一种“是”的关系。
    2. 用于派生新类的原始类称为父类、超类或基类,被派生出的类就称为子类或者亚类。
    3. 继承具有单向性。java中用extends来表示新类由现有类派生。
    4. protected修饰符:当变量声明为protected可见性时,子类就可以引用它,并且使父类保持了一定的封装性。(在UML图中,用#表示protected可见性。)
    5. super引用,使用super引用可以访问父类的成员。子类构造方法负责调用父类构造方法,而且应该在子类的构造方法的第一行用super()引用调用父类构造方法。
    6. java的继承方法为单继承,即子类只能有唯一的父类。在java中可以依赖接口实现多继承,
    7. 重写方法:即子类和父类里面有相同的方法和签名时,子类方法可以重写父类方法,子类方法优先。调用方法的对象决定决定了哪一个版本的方法将被实际执行。
    8. 影子变量:如果在一个子类中声明一个同名变量,则该变量称为影子变量。
    9. 类层次结构:继承关系通常发展成一个类层次结构。在类层次结构中,应当重视合理将类的公共特征保持在尽可能高的层级上。
    10. 所有的类都是直接或者间接由object类派生。object类定义在Java标准类库的java.lang包中。
    11. final修饰符可以限制继承的能力。用final修饰符声明方法,使得该方法在任何派生类中不能被重写。

    教材学习中的问题和解决过程

    • 问题1:抽象类和接口的区别?

    • 问题1解决方案:
      抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。抽象类要被子类继承,接口要被类实现。接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。抽象类里可以没有抽象方法。如果一个类里有抽象方法,那么这个类只能是抽象类。抽象方法要被实现,所以不能是静态的,也不能是私有的。接口可继承接口,并可多继承接口,但类只能单方面继承。

    • 问题2:接口可以实现接口吗?接口可以继承接口吗?这两者有什么关系?

    • 问题2解决方案:接口是常量和抽象方法的集合体。实现接口是指将接口中的抽象方法具体化,继承接口是指将接口中的方法继承下来但不具体化。因此,接口不能实现接口而接口可以继承接口。

    • 问题3:保留字super的作用。

    • 问题3解决方案:

    1. super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
    2. this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
    3. super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
    4. this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名
    • ...

    代码调试中的问题和解决过程

    • 问题1:用c语言的方法使用数组,频频报错。

    • 问题1解决方法:犯了经验主义错误,java定义数组的方法为
    String[] s=new String[x];
    

    而且数组容量固定且无法动态改变,而一个新概念“列表”容量可动态增长。于是我修改使用了列表。

    • 问题2:加密(解密)算法与加密(解密)密钥有什么区别?

    • 问题2解决方案:密钥使用的背景是开放式环境,也就是说,若算法公开,解密的关键就在于双方使用相同或对称的密钥。简单来说,密钥是一种参数(它是在明文转换为密文或将密文转换为明文的算法中输入的数据)
      加密算法是明文转换成密文的变换函数,是算法。
      同样的密钥可以用不同的加密算法,得到的密文就不一样了

    • 问题3:取余运算时计算出错

    • 问题3解决方案:取余运算为a-(a/b)b,但是a/b不是整数,无法正常运算。要将(a/b)b转化为int型。

    代码托管

    上周考试错题总结

    • 错题1

    • 分析调用构造函数而不是调用方法

    • 错题2

    • 分析:因为一个类可以实现任意数量的接口,所以这个类本质上使用接口类,就好像这些接口是在这个类中定义的一样。这个类继承了接口的方法和常量。此外,该类可以扩展另一个类,从而直接或间接地继承多个类。这与多重继承并不完全相同,但它与Java的概念非常接近

    • 错题3

    • 分析:因为记得Object是所有类的父类,概念混淆。Object类定义clone来创建任何对象的副本,equals用来确定两个对象是否是同一个对象,toString用来将一个对象转换成一个字符串。但是,compareTo不是由对象实现的,必须在希望实现Comparable接口的任何类中实现!

    • 错题4

    • 分析:同一父母的两个孩子之间的关系被称为兄弟姐妹(兄弟意味着性别)。克隆是同一对象的副本,别名是同一对象。在Java中,兄弟和亲戚不用于定义类之间的关系。sibings是兄弟姊妹的意思。

    • 错题5

    • 分析:“is-a”用来表示子类是父类的一种类型。例如,研究生是一种学生。子类是一个更具体的类型。hasa关系指的是类的属性或元素(例如,学生有GPA),而instance-of指的是类和该类的实例化对象之间的关系。没有was-a关系,别名表示引用相同对象或实例的两个变量。

    • 错题6

    • 分析:Extends用于继承…继承是一种is-a关系,而不是has-a关系。想法与上一题相同,认为继承是has-a,所以都选错了。

    • 错题7

    • 分析:Super将允许访问父类的所有非私有成员,但不允许访问私有成员。

    结对及互评

    博客中值得学习的或问题:

    • 代码练习较多,值得学习
    • 教材理解少了一点

    代码中值得学习的或问题:

    • 代码练习较少,希望多加练习
      基于评分标准,我给本博客打分:14分。得分情况如下:
    1. 正确使用Markdown语法(加1分)
    2. 模板中的要素齐全(加1分)
    3. 教材学习中的问题和解决过程(加3分)
    4. 代码调试中的问题和解决过程(加3分)
    5. 其他加分(加5分)
    6. 进度条中记录学习时间与改进情况(1)
    7. 感想,体会不假大空(1)
    8. 有动手写新代码(1)
    9. 排版精美(1)
    10. 点评认真,能指出博客和代码中的问题(1)
    11. 结对学习情况真实可信(1)

    点评过的同学博客和代码

    1. 远程计算器的编写
    2. indexOf、StringTokenizer的使用
    3. 接口问题探讨

    其他

    1. 国庆期间有认真回顾一下学过的课程,确定一边学习一边总结才能进步
    2. 沉住气多思考!

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 42/42 2/2 20/20
    第三周 394/471 2/4 25/45
    第四周 394/471 2/4 25/45
    第五周 1668/2139 2/6 35/80
    • 计划学习时间:30小时

    • 实际学习时间:35小时

    • 改进情况:代码量有所提高,还要提高效率

    参考资料

  • 相关阅读:
    jaxb 专题一(JAXB 实现java对象与xml之间互相转换)
    spring @Transactional注解参数详解
    Spring声明式事务管理与配置详解
    spring源码解析--事务篇(前篇)
    Java的三种代理模式
    Spring AOP面向切面编程详解
    Spring AOP基于注解的“零配置”方式实现
    Spring AOP 中pointcut expression表达式解析及配置
    Spring AOP详解
    一种解决maven单继承的办法
  • 原文地址:https://www.cnblogs.com/weiii/p/11632303.html
Copyright © 2011-2022 走看看