第五周作业
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 |