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

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

教材学习内容总结

  • 子类与父类的关系。子类是父类的其中一种。派生操作在子类中加保留字extends实现。子类的实例化并不依赖于父类的实例化。
  • protected修饰符(为了让子类能够访问并且不违反封装性原则)。父类中的变量和方法被声明为protected可见性时,子类就可以使用。
  • 父类的构造方法,子类不能继承(除非用super引用)。
  • super引用。
  • 多继承。
  • 子类和父类有相同的方法名和签名时,子类方法将重写父类方法,子类方法优先。
  • 可见性。在子类中,即使不能直接引用父类成员,但是父类成员也总是存在的,可以被间接地引用。
  • Object类。

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

  • 问题1:super引用和父类的关系。
  • 问题1解决方案:
1.super引用可以调用父类的构造方法。
2.super引用调用父类构造方法的操作只能在子类中执行,并且必须是在第一行执行。
3.父类构造函数有参数,子类中一定要用super引用,父类构造函数无参数,则super()引用可有可无。
  • 问题2:多继承
  • 问题2解决方案:
1.单继承中子类只能有唯一的父类。
2.java语言的设计者明确决定不支持多继承,以防出现父类的方法同名的情况。
3.作为替代多继承的方法,依赖接口。一个java类只能由一个父类派生,但可以实现多个接口。
  • 问题3:三种可见性修饰符的可见性比较
  • 问题3解决方案:private可见性最严格,public可见性最弱,protected可见性位于两者之间。
  • 问题4:接口类和抽象类
  • 问题4解决方案:
1.接口类:常量+抽象方法
2.抽象类:常量/变量+抽象/非抽象方法(注:抽象类可以不包含抽象方法)
3.抽象类是用来捕捉子类的通用性的,它不能被实例化,只能用作子类的超类,抽象类是被用来创建继承层级里子类的模板。
4.抽象类中的每一个抽象方法都必须使用abstract修饰符,抽象方法不使用final和static修饰符。

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

  • 问题1:

  • 问题1解决方案:({)少了一个,没有注意,加上就好了。

代码托管


上周考试错题总结

  • 1.

  • 解析:super指令表示对当前类的父类中某些内容的调用。因为没有消息,只有super(),所以它是父类构造函数的调用。

  • 单词:invocation(调用)

  • 2.

  • 解析:受保护的可见性修饰符用于以受保护(保护)的方式控制对项的访问。保护是将访问限制为当前类(如私有项)、同一包中的类或该类的扩展类。

  • 单词:visibility(知名度)extended (扩展)guarded(保护)

  • 3.

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

  • 单词:siblings(兄弟姐妹)

  • 4.

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

  • 单词:subclass(子类)instantiated(实例化)

  • 5.

  • 解析:为了使抽象方法变得具体,必须覆盖它。将一个方法声明为final使得不可能覆盖它。这是矛盾的,是禁止的。

  • 单词:prohibited(禁止)contradiction(矛盾)

  • 6.

  • 解析:Extends用于继承…继承是一种is-a关系,而不是has-a关系。

  • 单词:Inheritance(继承)

点评过的同学博客和代码

  • 本周结对学习情况
    • 20182317
    • 20182318
    • 结对学习内容
      • 子类和父类的关系
      • 接口和抽象类的区分
      • 对实验四代码编写的讨论
      • 继承是一种is-a关系,而不是has-a关系。has- a代表的是对象和它的成员的从属关系

其他(感悟、思考等,可选)

有一说一,国庆假期让人学习还是有够讨厌的呢!而且还布置这么多,希望老师以后国庆假期作业少布置些!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 56/56 2/2 20/20 主要学会了简单的操作Linux以及如何编写简单的java程序并将它上传到码云
第二、三周 331/407 3/5 23/43 学会了一些类和程序包的使用,也明白了C语言和Java在有些地方的区别
第四周 595/1002 2/7 20/60 学会了IDEA以及用IDEAgit码云,也学会了TDD测试
第五周 1621/2623 2/9 17/77 见识了服务器与用户链接的代码,也学习啦继承的一些知识。
  • 计划学习时间:20小时

  • 实际学习时间:17小时

  • 改进情况:这周是国庆假期,改进是不可能改进的,不退步都不错了!但是作业太多了,导致代码量增了这么多!!

参考资料

posted @ 2019-10-07 18:26  钱佳禹  阅读(235)  评论(3编辑  收藏  举报