第五周作业

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

教材学习内容总结

  • 继承是从已有类派生出一个新类的过程
  • 继承在子类和父类之间建立了is-a关系
  • 可以使用super引用来调用父类的构造方法
  • 一个类的子类可以是一个或多个其他类的父亲,这样形成了类层次
  • java的所有类都直接或间接地派生于Object类
  • 派生于抽象父类的类必须重写父类中所有的抽象方法。否则派生的类仍为抽象类
  • 私有成员也被子类继承,但不能通过名字直接引用。不过可以间接使用它们
  • final修饰符可用来限制继承

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

  • 问题一:抽象类与接口的区别?
  • 问题一解决方案:在抽象类中,每一个抽象方法都必须使用abstract修饰符,但抽象类不必一定包含抽象方法。而且需要注意,有抽象类派生的子类必须重写所有父类的抽象方法,否则该子类仍然是抽象类。
  • 问题二:关于书上所说的super的使用方法,书上值提到一种,且说它类似于this引用,我们学过this引用是用于引用当前正在运行的对象,那么两者到底有什么区别。
  • 问题二解决方案:从本质上讲,super是一个java关键字,而this是一个指向本对象的指针,super从子类中调用父类的构造方法,而this在同一类中调用其他方法,super还可以调用子类中重写方法的父类版本。
  • 问题三:类的层次结构及继承方式
  • 问题三解决方案:所谓类的层次结构就是类的不断继承,不断发展,但是类的继承是单向的,所以父类是一个简单的,相同性方法的一个集合。通过一个又一个的子类不断实现具体化。类的继承方式,通俗点说就是用extends连接父类和子类,用于子类的继承

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

  • 问题一:抽象类被子类继承以后,在驱动中输入System.out.println(....)调用方法显示出错
  • 问题一解决方案:在子类中,输出的语句本身就是通过 System.out.println(....)定义的,所以我觉得在System.out.println()语句中不能再生成一个System.out.println()
  • 问题二:不知道super怎么调用对象和方法
  • 问题二解决方案:将继承和super调用弄混了,继承可以直接使用父类变量或者方法

代码托管

上周考试课题总结

  • 错题一:The instruction super( ); does which of the following?
    A .calls the method super as defined in the current class
    B .calls the method super as defined in the current class'parent class
    C .calls the method super as defined in java.lang
    D .calls the constructor as defined in the current class
    E .calls the constructor as defined in the current class'parent class
    答案:E
    解析:instruction super表示对当前类的父类中某些内容的调用。因为除了super()之外没有消息,所以它是对父类构造函数的调用。
  • 错题二:Which of the following is not a method of the Object class?
    A .clone
    B .compareTo
    C .equals
    D .toString
    E .all of the above are methods of the Object class
    答案:B
    解析:object类定义clone来创建任何对象的副本,等于确定两个对象是否是同一个对象,to string来将对象转换为字符串。但是,compareTo不是按对象实现的,必须在任何要实现可比较接口的类中显式实现。
  • 错题三:Two children of the same parent class are known as
    A .aliases
    B .relatives
    C .clones
    D .brothers
    E .siblings
    答案:E
    解析:同一父母的两个孩子之间的关系被称为兄弟姐妹(兄弟会暗示性别)。克隆是同一个对象的副本,别名是同一个对象。兄弟和亲戚不被用来定义Java中类之间的关系。
  • 错题四:Which of these is correct?
    A .a base class is a parent class or super class
    B .a base class is a child class or derived class
    C .a child class is a super class of its parent
    D .a parent class is a subclass of its child
    E .none of the above
    答案:A
    解析:这个术语、基底类、父系类、超级类是一个同义词。他们都要求将课堂用作遗产的基础,然后将课堂扩展为基础课堂。
  • 错题五:If you instantiate an Abstract class, the class or object you wind up with
    A .is also an Abstract class
    B .is a normal class
    C .is an Interface
    D .is a reference to an Object
    E .can't exist you cannot instantiate an Abstract class
    答案:E
    解析:你只能实例化具体的类而不是抽象的类。但是您可以扩展抽象类和接口。
  • 错题六:A derived class has access to all of the methods of the parent class, but only the protected or public instance data of the parent class.
    A .true
    B .false
    答案:B
    解析:由于方法也可以声明为私有的,所以派生类不能访问任何私有方法。因此,派生类只能访问父类的受保护的公共方法和实例数据。

结对及互评

  • 博客中值得学习的或问题
    错题反思较为具体,排版清晰简洁,对于自己这一章节的学习过程记录的比较详细。
  • 基于评分标准,我给本博客打分:15分 得分情况如下:
    1.正确使用Markdown语法(加1分)
    2.模板中的要素齐全(加1分)
    3.教材学习中的问题和解决过程(加2分)
    4.代码调试中的问题和解决过程(加3分)
    5.感想,体会不假大空(加1分)
    6.排版精美(加1分)
    7.进度条中记录学习时间与改进情况(加1分)
    8.有动手写新代码(加1分)
    9.错题学习深入(加1分)
    10.点评认真,能指出博客和代码中的问题(加1分)
    11.结对学习情况真实可信(加1分)
    12.本周有效代码超过300分行(加2分)

点评过的同学博客和代码

  • 本周结对学习情况
    20182306
  • 结对学习内容:
    学习继承的相关概念
    学习自己编写服务器与客户端
    在实验中学习编写分数运算的有理数计算器
    ······

感悟

因为这一周正值国庆假期,相对耽误了java的学习,尤其是到最后完成实验可以说有点赶,感觉知识学的并不扎实,有的地方还没有完全弄明白,下一周一定尽力把坑填上

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 171/171 2/2 20/20
第二三周 415/586 3/5 42/62
第四周 587/1173 2/7 22/84
第五周 1706/2879 2/9 19/103

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导

你可能感兴趣的:(第五周作业)