201521123047 《Java程序设计》第4周学习总结
- 本周学习总结
==========
1.1 尝试使用思维导图总结有关继承的知识点。
1.2 使用常规方法总结其他上课内容。
答: - 只能有一个父类,即单继承,子类继承父类的全部成员(属性和方法),并可能有自己特有的属性和方法。
- 覆盖是指在子类中重新定义父类中的方法。
- 多态性是指相同的形态不同的行为即方法名相同,但是实现的过程不同。
- instanceof 可以判断父类引用所引用的对象实例的实际类型。
- final修饰变量,表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。
参考资料:
百度脑图
XMind
- 书面作业
==========
1、注释的应用
使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)
2、面向对象设计(大作业1,非常重要)
2.1 将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)
在老师布置完作业的时候,sd卡十分配合的损坏了,于是我逛起了淘宝。
首先登录
我选择的是手机扫码登录
然后搜索“sd卡”
发现了一个不错的sd卡,进去看看
看了看介绍,表示很心动,就给放进购物车里面
最后。。结算。。。。。
2.2 通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。
2.3 尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)
参考资料:
UML类图
面向对象案例-借款者姓名地址.zip
3、ManagerTest.zip代码分析
分析ManagerTest.zip中的代码,回答几个问题:
3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。
class Manager extends Employee //使用了extend关键字
{
public Manager(String n, double s, int year, int month, int day)
{
super(n, s, year, month, day); //super关键字,调用了父类里Employee(String n, double s, int year, int month, int day)方法
bonus = 0;
}
public double getSalary()
{
double baseSalary = super.getSalary();//super关键字,调用了父类里getSalary()方法
return baseSalary + bonus;
}
3.2 Employee
类及其子类Manager
都有getSalary方法,那怎么区分这两个方法呢?
答:在使用getSalary时,若是父类的,前面要加上super,即super.getSalary(),以此来区分两个方法。
3.3 文件第26行e.getSalary()
,到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。
答:这与e的类型有关,在代码中可以看到boss是Mannager类的,而staff[0]=boss,所以在输出staff[0]的数据时,调用的是Manager类的getSalary方法;staff[1]和staff[2]为Employee类的,所以输出时调用的是Employee类的getSalary方法。
3.4 Manager
类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?
答:代码复用最直接的好处就是减少了代码数量,使代码更加精简,减少了编码的时间,重新使用已有的代码可以降低成本、增加代码的可靠性并提高它们的一致性。复制黏贴虽然看起来更直观,但是会浪费计算机资源,同时程序会变长,不美观。
4、Object类
4.1 编写一个Fruit
类及属性String name
,如没有extends自任何类。使用System.out.println(new Fruit());
是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?
代码如下:
package Main;
import java.util.*;
class Fruit {
private String name;
}
public class Main {
public static void main(String[] args) {
System.out.println(new Fruit());
}
}
结果Main.Fruit@15db9742
这是调用了Fruit的toString方法,该方法是object类里面的,作用是返回一个表示引用对象自己正常信息的字符串,而这个字符串的内容由我们自己去定义,默认的字符串内容是“类名+哈希编码”。
附上照片
4.2 如果为Fruit
类添加了toString()
方法,那么使用System.out.println(new Fruit());
调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)
答:添加了toString()方法
父类中的方法还在,如果要复用需要加上super关键字。
4.3 Fruit类还继承了Object
类的eqauls
方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true
。(使用代码证明你自己覆盖的eqauls方法是正确的)
public boolean equals(Object obj) {
return (this == obj);
}
具体作用就是相等返回true,不相等返回false。
主要代码
结果
4.4 在4.3的基础上使用ArrayList<Fruit> fruitList
存储多个fruit,要求如果fruitList中已有的fruit就不再添加,没有的就添加进去。请编写相关测试代码。并分析?ArrayList的contatins
方法是如何实现其功能的
`
答:ArrayList的contatins方法的实现是通过使用Fruit类里面的equals方法,来实现其功能的。
5、代码阅读:PersonTest.java(abstract、多态)
5.1 画出类的继承关系
5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因
答:将对象按年龄从小到大排序,然后输出。
5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?
答:子类中使用super构造函数作用是调用父类的构造函数,不能将子类中的super构造函数去掉,这样的话子类就不能调用父类的构造函数。
5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?
体现:
Person[] peoples = new Person[4];
peoples[0] = new Employee("zhang", "136", "1360", "1360@mail.com", 21, "female", 1000.0);
peoples[1] = new Student("wang", "110", "15959", "15959@163.com", 18, "male", "1");
peoples[2] = new Programmer("Gates", "usa", "911", "911@com", 59, "male", 100000.0, 50000.0);
peoples[3] = new Manager("Clark", "GE", "111", "111@mail.com", 10, "mail", 90000.1, 12000.3);
多态能使同一方法在不同类中有不同的体现,这能是代码量降低,同时能使代码更加灵活。
参考文件:PersonTest.java
- 码云代码提交记录
==========
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图
4. PTA实验
题目集:jmu-Java-03-面向对象1-基础-封装继承 中的
函数(4-1, 4-2, 4-3,4-4较难选做)
编程(5-4, 5-5, 5-6)
实验总结:
5-4:这一题使用到了抽象类shape,主要是加上关键词abstract,这样能更好的应付不同的图形求面积边长等问题。
5-5:这一题需要用到ArrayList的contains方法,需要了解该方法的使用。
201521123047 《Java程序设计》第4周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- 一步一步学多线程-ThreadLocal源码解析
上网查看了很多篇ThreadLocal的原理的博客,上来都是文字一大堆,费劲看了半天,大脑中也没有一个模型,想着要是能够有一张图明确表示出来ThreadLocal的设计该多好,所以就自己看了源码,画了 ...
- Vue组件选项props
前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...
- window/mac系统关机
window/mac系统关机 #ifdef Q_OS_WIN #include "windows.h" #endif void OnShutDown() { #ifdef Q_OS ...
- Qt将窗体变为顶层窗体
//重载resizeEvent和moveEvent两个函数,以保证窗体大小和位置改变后能时刻记住其位置 QRect curGemRect = mpWindow->geometry(); //激活 ...
- MYSQL数据库相关操作---读书笔记分享
===================数据库软件: <DBMS,DataBase Management System >数据库: 保存特定类型数据的容器<DB,database> ...
- BTrace : Java 线上问题排查神器
BTrace 是什么 BTrace 是检查和解决线上的问题的杀器,BTrace 可以通过编写脚本的方式,获取程序执行过程中的一切信息,并且,注意了,不用重启服务,是的,不用重启服务.写好脚本,直接用命 ...
- Spring(二)之配置.md
依赖配置详解 bean的属性及构造器参数既可以引用容器中的其他bean,也可以是内联(inline)bean.在spring的XML配置中使用 直接变量(基本类型.Strings类型等.) <v ...
- 理解JavaScript的立即调用函数表达式(IIFE)
首先这是js的一种函数调用写法,叫立即执行函数表达式(IIFE,即immediately-invoked function expression).顾名思义IIFE可以让你的函数立即得到执行(废话). ...
- CSS小随笔(三)浮动与定位
先来说一下CSS中的浮动 一.浮动 1.标准流中的块级盒子,宽度将自动伸展为100%,而浮动的块级盒子,宽度不会自动伸展,而是由内容撑开 2.当一个盒子浮动,标准流中未浮动的其他盒子,将视浮动盒子不存 ...
- WeQuant交易策略—简单均线
简单双均线策略(Simple Moving Average) 策略介绍简单双均线策略,通过一短一长(一快一慢)两个回看时间窗口收盘价的简单移动平均绘制两条均线,利用均线的交叉来跟踪价格的趋势.这里说的 ...