1. 本章学习总结

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

1.2 使用常规方法总结其他上课内容。

Answer:
- 上课还讲了tostring的使用,般toString用于返回表示对象值的字符串;
- Object类中equals方法用来判断两个对象是否具有相同的引用;
- 散列码是由对象导出的一个整型值;
- 上课还是感觉跟天书一样,自身基础差比较笨吧,所以代码都不会打,头疼哦!

2. 书面作业

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



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

2.1将在网上商城购物或者在班级博客进行学习这一过程,描述成一个故事。(不得少于50字);

Answer:要在网上购物,我们一般需要一台电脑或者手机,假如用的是电脑吧,当然要先打开浏览器,然后搜索购物平台,如果淘宝啊,当当啊,京东之类的,就拿淘宝举个例子吧,打开淘宝后



如果你想购物的话在界面左上角有个“亲,请登入”;要登入淘宝账号,如果没有呢,那就比较麻烦了,需要申请淘宝账号才能进行下一步购物操作了。登入后,在淘宝网页搜索栏里面搜索,例如搜索java;



网页里面就会有一些关于java这一本书的内容,例如价格呀,有没有包邮之类的信息,在网页的右上角还有可以选择七天退货,正品保障之类的,选好书本后,点击进去;



就可以选择立即购买或者加入购物车,如果选择立即购买,那就买啦,只是要记得填上你的地址哦!如果是选择加入购物车,那就可以到购物车界面去结算啦!如果你觉得发现加入购物车后不喜欢这本书了,那就可以直接在购物车里面删除这本书哦!

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

首先我感觉应该要有一个登入类,因为进入淘宝后总是需要登入账号和密码才能够进行购物的嘛;然后应该还要有搜索类,进行搜索东西,根据输入的关键字进行搜索;还有应该有商品类,比如什么书本啊,手机之类的;还应该有个购物车类吧,进行结算,添加,删除的操作;还应该有价格排序,综合评价排序,商品是否正品保障,免邮之类的吧~(啊哈,瞎说的)。然后我感觉买完应该还有售后服务类,评价类吧~。

2.3尝试使用Java代码实现故事中描述的这一过程(不必很完善),将来要在这个基础上逐渐完善、扩展成一个完整的面向对象的系统。(可选:加分)

public class Login{
private String username;
private String password;
}
public class Search{
public String word;
void search;
}
public class Goods{
public String books;
public String clothes;
public String phones;
...
}
public class Shopping car{
private void pay(){
};
private void add(){
};
private void delete(){
}
}
public class After-sales service{
private String evaluate;
private void sales return(){
}
}

3.ManagerTest.zip代码分析

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

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

Answer:
public Employee(String n, double s, int year, int month, int day)//Employee类,父类
{
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
hireDay = calendar.getTime();
}
class Manager extends Employe//Manager类,出现extends关键字,继承父类,为子类
{
/**
* @param n the employee's name
* @param s the salary
* @param year the hire year
* @param month the hire month
* @param day the hire day
*/
public Manager(String n, double s, int year, int month, int day)//Manager类
{
super(n, s, year, month, day);//super关键字调用父类
bonus = 0;
} public double getSalary()
{
double baseSalary = super.getSalary();//super关键字
return baseSalary + bonus;
} public void setBonus(double b)
{
bonus = b;
} private double bonus;
}

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

Answer:ppt上说“对于子类重写的方法,JVM根据调用该方法的实际对象的类型来决定选择调用哪个方法。”; 然后,可以用super来区分父类的getSalary和子类的getSalary;举个例子:super.getSalary()就表示父类的getSalary()方法;

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

Answer:其实根据代码的运行结果,我们可以知道调用的是Manager类的getSalary;



(不出意外这题上课讲过的,然后模模糊糊的记得)。



该代码定义了一个employee类的staff数组,但是它将staff[0]定义为manage类中的boss,而staff[1]和staff[2]是employee类的。

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

Answer:Manager类的构造函数使用super调用父类的构造函数实现了代码复用,这样可以节约打重复代码浪费的时间,如果把父类构造函数中的相关代码复制粘贴到Manager的构造函数中,会使人阅读起来更加麻烦,冗长。

4.Object类

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

Anawer:



输出:

  • 当我们直接输出某个对象的时候,会直接调用toString()方法;该代码是从object类来的。
  • Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。(总而言之,object类就是所有类的爸爸!)
  • 附上object类详解链接:http://baike.so.com/doc/5904392-6117294.html

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

    Answer:父类中的toString方法的代码肯定还存在的,如果没有了,那么其他类要调用父类的toString不就都要再重新写了吗!想要复用父类的toString用super啊!





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

    Answer:
public boolean equals(Object obj) {
return (this == obj);
}



eclipse自动生成hashcode()和equals()真的太棒了,我是真滴不会how to do!嘿嘿嘿!

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

5.1 画出类的继承关系



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

Answer:真正运行结果

Manager [bonus=12000.3, toString()=Employee [salary=90000.1, toString()=Person [name=Clark, adress=GE, phonenumber=111, email=111@mail.com, age=10, gender=mail]]]
Student [status=1, toString()=Person [name=wang, adress=110, phonenumber=15959, email=15959@163.com, age=18, gender=male]]
Employee [salary=1000.0, toString()=Person [name=zhang, adress=136, phonenumber=1360, email=1360@mail.com, age=21, gender=female]]
Programmer [allowance=50000.0, toString()=Employee [salary=100000.0, toString()=Person [name=Gates, adress=usa, phonenumber=911, email=911@com, age=59, gender=male]]]
  • 分析:根据思维导图可以看出来总共有五个类,但是因为abstract class Person,可以看出person是一个抽象类,所以分析其他的四个类;Employee类,Student类,Programmer类,Manager类四个类的toString()方法,我们可以发现他们具有统一的格式,就是输出自己特有的成员变量,然后调用父类的同名方法,但是Manager类和Programmer类父类Employee类继承了Person类,所以有两层嵌套!

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

    Answer:super的作用是调用父类的构造函数;不行,如果子类构造函数没有显式地调用父类的构造函数,则自动调用父类默认无参构造函数,如果父类无相应无参构造函数,则会出错。

    5.4 为什么Person中的getDescription要声明为abstract?

    Answer:是我眼瞎了了,为什么找不到getDescription?

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

    Answer:多态性是指相同的形态,不同的行为(不同的定义)相同的方法名,不同的实现;父类类型变量可以引用子类对象(重要);很明显toString就体现了多态,形如:public class Employee extends Object{……};public class Manager extends Employee{……};public class Progammer extends Employee {……}就是多态。多态就是一个接口,使用不同的实例去执行不同的操作,好处就是增强程序的可扩展性及可维护性,使代码更简洁。个人感觉多态和继承没有什么关系,然后就顺便搜索了一下,不知道是否正确...(附上链接:http://wenda.so.com/q/1378229141068865?src=9999&cid-pre=1000204。)

3. 码云代码提交记录

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

4.4. PTA实验

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

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

    编程(5-4, 5-5, 5-6)
  • 一定要有实验总结

    Answer:要通过super来调用父类方法;用eclipse自动生成hashcode()和equals()方法真的好用!感觉还是需要多练吧,每次都花费大量时间在Java上,打代码能力还是超级无敌差,好多编程题还没做完,会尽快完成的,每次打代码都需要请教学霸,感觉自己真的弱爆了!!可能编程真的真的真的不适合我!长时间坐在电脑面前是真滴难受哦!fighting!

201521123111《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. MySQL中的基本知识

    本文是MySQL中的一些基本知识,包括各种基本操作.数据类型和表的约束等. ps:都是自己总结.手打出来的,虽然不是什么新东西,但也勉强算原创吧.. 一.数据库 1.创建:CREATE DATABAS ...

  2. python实战===使用smtp发送邮件的源代码,解决554错误码的问题,更新版!

    import smtplib from email.mime.text import MIMEText from email.header import Header import time #密文输 ...

  3. 【NO.10】Jmeter - 一个完整的录制脚本的过程

    上1篇介绍了"使用Jmeter对一个接口地址或者一个页面地址执行N次请求",也就是你自己干了一件从"零"开始的事情. 那么这1篇介绍"如何使用Jmeter录制'访问一个接口地址或者一个页面地址'的脚本 ...

  4. Linux - 简明Shell编程13 - 用户输入(UserInput)

    脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 1 - arguments #!/bin/bash i ...

  5. DVWA笔记之二:Command Injection

    命令注入 1.Low级别 <?php  if( isset( $_POST[ 'Submit' ]  ) ) {      // Get input      $target = $_REQUE ...

  6. 如何编写更好的SQL查询:终极指南-第一部分

    结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的.对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重要的.这 ...

  7. ZOJ 3811 Untrusted Patrol The 2014 ACM-ICPC Asia Mudanjiang Regional First Round

    Description Edward is a rich man. He owns a large factory for health drink production. As a matter o ...

  8. HashMap和ConcurrentHashMap流程图

    本文表达HashMap和ConcurrentHashMap中的put()方法的执行流程图,基于JDK1.8的源码执行过程. HashMap的put()方法: ConcurrentHashMap的put ...

  9. centos 7 mariadb 启动问题

    安装完了 mariadb 后 有一天重启机器发现 启动不了 mariadb.service systemctl start mariadb.service //然后发现下面的问题 job for ma ...

  10. CentOS7.3虚拟机扩展数据磁盘

    操作之前需要重点查看: 由于扩容磁盘的操作非同小可,一旦哪一步出现问题,就会导致分区损坏,数据丢失等一系列严重的问题,因此建议:在进行虚拟机分区扩容之前,一定要备份重要数据文件,并且先在测试机上验证以 ...