1. 本周学习总结

1.1 尝试使用思维导图总结有关继承的知识点。

2. 书面作业

注释的应用

使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclipse中查看。(截图)

答:





面向对象设计(大作业1,非常重要)

2.1 将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字,参考QQ群中PPT的范例)

答:

1.我的钥匙扣和钥匙一起丢了,我想要一个新的钥匙扣(/TДT)/

2.我来到了某网上购物网站并注册登录

3.在网站的搜索框内,我键入“舰娘钥匙扣”几个字符

4.很快,想要的商品出现在我的眼前。我点击“包邮”对商品进行筛选

5.再继续点击“按销量排行”对商品进行排序

6.看!这款■第六驱逐队 晓响雷电 亚克力钥匙扣挂饰 ■多可爱!就是它了(o)/ 先让我把它加入购物车(〜 ̄△ ̄)〜

7.来到购物车,点击结算

8.继续前进到付款界面,选择支付方式为支付宝,付款成功!

9.我的钥匙扣已经在路上啦!(ノ≧∇≦)ノ

2.2 通过这个故事我们能发现谁在用这个系统,系统中包含的类及其属性方法,类与类之间的关系。尝试找到这些类与属性,并使用思维导图描述类、属性、方法及类与类之间的关系。

答:

package shopping;

class Login {// 账户类
String userName;
String password;
void QRCode()
{
// 二维码登录
}
} class Search {// 搜索类
private String keyWord;
void search() { }
} class freePost extends Goods{//判断是否包邮
boolean isFreePost(){ }
} class sortFromSalesVolume extends Goods{//按销量排序
sortFromSalesVolume(){ }
} class Goods {// 商品类
private String name;
private String price;
private boolean freePost;// 是否包邮
private int salesVolume;//销量
} class ShoppingCart {// 购物车类
private double totalPrice; public void add() { } public void delete() { } public void pay() { }
} class Menu {// 菜单类
public void Login(Login user) { } public void Search() {
Search search = new Search();
} public void ShoppingCart(ShoppingCart shoppingCart) { }
} class ShoppingSystem {// 购物平台
public static void main(String[] args) { }
}

思维导图如下:

ManagerTest.zip代码分析

分析ManagerTest.zip中的代码,回答几个问题:

3.1 在本例中哪里体现了使用继承实现代码复用?回答时要具体到哪个方法、哪个属性。

答:

    //Employee类为父类
public Employee(String n, double s, int year, int month, int day)
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
hireDay = calendar.getTime();
}
public double getSalary()
{
return salary;
} //Manager类为子类
public Manager(String n, double s, int year, int month, int day)//复用父类中的各项属性
{
super(n, s, year, month, day);//复用父类的Employee()方法
bonus = 0;
}
public double getSalary()//复用父类的getSalary()方法
{
double baseSalary = super.getSalary();
return baseSalary + bonus;
}

3.2 Employee类及其子类Manager都有getSalary方法,那怎么区分这两个方法呢?

答:Employee为父类,Manager为子类,Java中关键字super可以表示父类,故而是区分两个方法的绝佳手段

3.3 文件第26行e.getSalary(),到底是调用Manager类的getSalary方法还是Employee类的getSalary方法。

答:main函数中定义e的类型为Employee,就近原则使用Employee类的getSalary方法

3.4 Manager类的构造函数使用super调用父类的构造函数实现了代码复用,你觉得这样的有什么好处?为什么不把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,这样看起来不是更直观吗?

答:super的好处就是避免了代码的冗余,节省时间和资源。计算机不是人类,不需要“直观”

Object类

4.1 编写一个Fruit类及属性String name,如没有extends自任何类。使用System.out.println(new Fruit());是调用Fruit的什么方法呢?该方法的代码是从哪来的?尝试分析这些代码实现了什么功能?

答:

调用Fruit的toString()的方法;因为toString()是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。

在Object.class中找到如下代码:

    public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

可以知道它将输出类的名称以及一个"@"符号,并以Integer类型输出此对象哈希码的无符号十六进制,所有这一切将以字符串的形式返回

4.2 如果为Fruit类添加了toString()方法,那么使用System.out.println(new Fruit());调用了新增的toString方法。那么其父类中的toString方法的代码就没有了吗?如果同时想要复用其父类的toString方法,要怎么操作?(使用代码演示)

答:

直接使用eclipse中的自动生成功能完成toString()方法:

找到Object.class文件,可以发现父类(Object)中的toString方法的代码依旧存在

4.3 Fruit类还继承了Object类的eqauls方法。尝试分析其功能?自己编写一个equals方法覆盖父类的相应方法,功能为当两个Fruit对象name相同时(忽略大小写),那么返回true。(使用代码证明你自己覆盖的eqauls方法是正确的)

答:在eclipse自动生成功能完成hashCode()与equals()方法

public class Main {

	public static void main(String[] args) {
Fruit a=new Fruit("Kantai Collection");
Fruit b=new Fruit("KANTAI COLLECTION");
Fruit c=new Fruit("World of Warships");
System.out.println(a.equals(b));
System.out.println(a.equals(c));
}
} class Fruit{
String name;
public Fruit(String name){
this.name=name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Fruit other = (Fruit) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equalsIgnoreCase(other.name))
return false;
return true;
}
}

运行结果:

代码阅读:PersonTest.java(abstract、多态)

5.1 画出类的继承关系

答:

5.2 读懂main函数,将自己推测的出代码运行结果与真正运行结果进行比较。尝试分析原因

答:运行结果:

原因分析:main函数中Person数组中每个对象以各自所定义的类中的(字符串)toString的形式输出。同时程序对数组中的元素依据年龄进行了排序(由低到高),再使用for (Person person : peoples)将数组元素逐个输出

5.3 子类中里面使用了super构造函数,作用是什么?如果将子类中的super构造函数去掉,行不行?

答:super构造函数的作用是:调用父类的构造函数;

不可以去掉super构造函数,如果去掉super,Java默认调用一个父类的无参数的构造函数,而父类中的构造函数都需要参数,编译将无法通过

5.4 PersonTest.java中的代码哪里体现了多态?你觉得多态有什么好处?多态和继承有什么关系吗?

答:多态是指:使用单一接口操作多种类型的对象;书p188

代码哪里体现了多态:main函数中对peoples数组的相关操作中,既可以使用Person类型操作Student对象,也能使用Person类型操作Employee对象

多态的好处:使用继承关系屏蔽子类对象之间的差异性,可以根据不同需求编写不同的方法调用相应子类满足需求,提高了程序的通用性

多态与继承:

1.继承,子类继承父类中所以的属性和方法,但是对于private的属性和方法,子类虽然是继承了,但是需要父类提供特定的方法进行访问,否则相当于没有继承到

2.多态:需要有父类子类的继承关系,才能实现使用单一接口操作多种类型的对象;有了封装,继承才能有多态

3. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图

4. PTA实验

题目集:jmu-Java-03-面向对象1-基础-封装继承 中的

函数(4-1, 4-2, 4-3,4-4较难选做)

编程(5-4, 5-5, 5-6)

实验总结

4-1:注意使用关键字extends便可轻易解决,十分简单

4-2:使用if...else条件嵌套,使用Java自带的equals方法依据输入的字符与应该采取的措施-

4-3:本题要求覆盖Employee类的equals方法,并判断两个Employee对象是否相等(注意均为null的情况);之后还要比较company与salary属性,其中salary是double型,使用DecimalFormat df = new DecimalFormat("#.##");

5-4:定义一个抽象(abstract)的Shape类,让Rectangle与Circle继承它,然后再在主类中添加上题目中需要的相应方法。

5-5:对覆盖的使用提出更高要求,同时也要更加熟练数组的操作

201521123057 《Java程序设计》第4周学习总结的更多相关文章

  1. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  2. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  3. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  4. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. Core 2.0 的dll实时更新、https、依赖包变更问题及解决

    今天所有开发环境已经迁移到mac OS下的Visual Studio Code + 命令行编译发布,而运行服务器是CentOS7,和windows没什么关联了. 只要你Relese编译并在本地有一个与 ...

  2. python数据分析入门学习笔记

    学习利用python进行数据分析的笔记&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据分 ...

  3. 在Eclipse下运行Jmeter3.0源代码

    1.创建项目 准备工作:在http://jmeter.apache.org/download_jmeter.cgi中分别下载binaries和source两个压缩包,前者为release版本,后者则为 ...

  4. 【leetocde】 105. Construct Binary Tree from Preorder and Inorder Traversal

    Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  5. Hadoop-2.8.0 开发环境搭建(Mac)

    Hadoop是一个由Apache基金会开发的分布式系统架构,简称HDFS,具有高容错性.可伸缩性等特点,并且可以部署在低配置的硬件上:同时,提供了高吞吐量的数据访问性能,适用于超大数据集的应用程序,以 ...

  6. jQuery选择器使用习惯

    http://www.cnblogs.com/fredlau/archive/2009/03/19/1416327.html

  7. V8 内存控制

    V8主要将内存分为:新生代 和 老生代. 1.新生代 新生代中的对象为存活时间短的对象. 它将堆内存一分为二,每一部分空间称为 semispace,其中一个处于使用状态(from 空间),另一个处于闲 ...

  8. centos7使用无线wifi连接

    一:所用命令 dmesg | grep firmware(看看有没有来自无线网卡的固件请求) iw: iw dev(查找无线网卡口) iw wls1 link(查看wls1网口无线网络连接情况) iw ...

  9. GC选择之CMS 并发标记清除

    CMS收集器 Concurrent Markup Sweep 并发标记清除 使用了标记-清除算法 与标记-压缩相比,并发阶段会降低吞吐量 算法作用在老年代以及永久区(新生代使用ParNew) -XX: ...

  10. 【Oracle】环境变量与监听文件

    一.环境变量的及其含义: 数据库主目录 ORACLE_HOME=D:\app\Administrator\product\11.2.0\dbhome_1 监听文件所在目录 TNS_ADMIN=D:\a ...