1. 本周学习总结

1.1 尝试使用思维导图总结有关多态与接口的知识点。

2. 书面作业

1代码阅读:Child压缩包内源代码

1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。

    如图,出错的语句是System.out.println(i);因为在父类中i的类型是private;应该改为protected;
改正后输出结果如下:

  c.getParenti();输出父类的i,子类没有重新定义i,所以输出的还是父类的i;
c.getParentj();输出父类的j;
Other.showParentj(p);输出父类的j和父类的i,static修饰,直接用调用类名。

1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。

无法编译通过
错误提示:Parent cannot be resolved to a type
原因:OutOfParentPackage在Parent包之外,访问不到

1.3 回答:如果为了访问到protected修饰的属性或方法应该怎么办?

Parent类加上Public,将其中protected int j=2改为public int j=2,并将其geti()方法加上修饰词public。

2.abstract进阶:阅读GuessGame抽象类的设计与使用源代码

2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?

改造前,未使用抽象类,只能控制台输出
改造后,使用抽象类,可以在控制台,也可以使用对话框图形界面等输入

2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?

设计一个图形界面的类去继承上面提到的抽象类

2.3 结合该例子,你觉得什么时候应该使用abstract?

用abstract来修饰的类叫抽象类
抽象类必须被继承
抽象类不能直接被实例化,只能作为其他类的父类
综上:当我们希望这个基类不能被实例化,就可以把这个基类设计成抽象类。

2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。

变化的是环境,我们可以用不同的环境,例如2.1改造前只能控制台输出,改造后可以在控制台,也可以使用对话框图形界面等输入
不变的是定义的这个抽象类

3.Comparable与Comparator

3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?

用途:Comparable接口抽象出了比较的共同特性,可以直接使用Arrays.sort对其进行排序
原因:所有实现Comparable的对象都有一个共同的特性-可以被比较,具体体现在均拥有compareTo方法, 即拥有共同行为,
Arrays.sort就是面向Comparable接口进行编程,这就是所谓的面向接口编程

3.2 有了Comparable接口为什么还需要Comparator接口呢?

两个接口都是实现元素的比较、排序
但是:
Comparator是在集合外部实现的排序,
comparable是放在比较对象的类外面的

4.面向接口案例分析,阅读Case-StudentDao.zip案例

4.1 画出类关系图,描述每个类与接口的作用。

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?

使用的数据结构不同,StudenDaoListImpl用ArrayList,StudentDaoArrayImpl用数组

5.什么是面向接口编程?面向接口编程的好处是什么?

面向接口编程:
从上面的例子分析面向接口编程调用Arrays里面写好的sort排序
题目3用到了两个接口,分别是Comparable和Comparator,通过这两个接口,可以调用Arrays已经写好的sort()方法来我们定义的类进行排序
   题目4,类似于一个存放学生数据的数据库。我们可以用ArrayList,也可以用数组来实现,但是这两种数据结构都可以进行相同的操作
面向接口编程的好处:面向接口编程可以将接口与实现相分离,从而大大提高程序的灵活性

6.结队编程:面向对象设计(大作业2-非常重要)

内容:使用Java代码完成上周做的面向对象设计大作业,需要有初步界面。实现的功能尽量简单,少而精,只包含必要的功能,不要追求高大全。

写出:类图(尽量精简,不用太多子类,两个即可)、系统常用功能描述、关键代码与界面

形式: 两人依托码云合作完成。请在这里贴出你们的学号、姓名与任务分工。

注意: 再过几次课要讲Java图形界面编程,到时候要将该系统升级为图形界面。系统的业务逻辑部分应该变化不大,变化大的是输入与输出部分。所以编码的时

输入(Scanner)与输出(System.out)的代码,请不要将其与某个业务处理函数绑死。

第6题提交作业的结构:

6.1

学生A 学生B
http://www.cnblogs.com/zxl3066/ http://www.cnblogs.com/201521123065hyw/

6.2 常用功能描述框架图

6.3 关键代码

public class Shoppingcart {
ArrayList<Product> prolist = new ArrayList<Product>();
public void addpro(Product pro){
prolist.add(pro);
}
public void printlist(){
System.out.println(prolist);
}
public double calprice(){
double totalprice=0;
for (int i = 0; i < prolist.size(); i++) {
totalprice+=prolist.get(i).price*prolist.get(i).num;
}
return totalprice;
} } public class Menu implements Print {
static Scanner sc = new Scanner(System.in); public void print(String string) {
System.out.println(string);
} public String next() {
Scanner sc = new Scanner(System.in);
return sc.next();
} public int nextint() {
Scanner sc = new Scanner(System.in);
return sc.nextInt();
} public void menu(Shoppingcart cart, Product[] p) {
System.out.println("1、商品信息:");
System.out.println("2、购物车:");
switch (sc.nextInt()) {
case 1: {
System.out.println(Arrays.toString(p));
System.out.println("选择添加商品序号:");
switch (sc.nextInt()) {
case 1: {
cart.addpro(p[0]); }
case 2: {
cart.addpro(p[1]);
break;
}
case 3: {
cart.addpro(p[2]);
break;
}
}
menu(cart, p);
} case 2: {
if (cart.prolist.isEmpty())
System.out.println("您的购物车是空的哦!");
else { System.out.println("结算总计:");
cart.printlist();
break; }
menu(cart, p);
}
}
}
}

6.4 运行界面

3. 码云上代码提交记录及PTA实验总结

题目集:jmu-Java-04-面向对象2-进阶-多态接口内部类

3.1. 码云代码提交记录

3.2. PTA实验

1.在使用Comparable接口的时候要记得用implements

2."is a"关系的时候用继承,"has a" 关系的时候用接口,在写代码之前要分清楚类与类之间的关系

3.Arrays有一方法 public static void sort(Object[] a)

功能:对指定对象数组按升序进行排序, 数组中的所有元素都必须实现 Comparable 接口

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

  1. 201521123025<java程序设计>第五周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 1.2 ...

  2. Java程序设计第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 2. 书面作业 **代码阅读:Child压缩包内源代码 Child.java源代 ...

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

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

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

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

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

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

  6. 20155304田宜楠2006-2007-2 《Java程序设计》第一周学习总结

    20155304田宜楠2006-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 - 浏览教材,根据自己的理解每章提出一个问题 第一章 除了书上提到的开发工具还有什么适合 ...

  7. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

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

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

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

    20175209 <Java程序设计>第九周学习总结 一.教材知识点总结 有关数据库下载中存在可能出现的问题已经在博客<数据库安装和使用过程中出现的一些问题>给出了相应的解决办 ...

  10. 20175313 张黎仙《Java程序设计》第九周学习总结

    目录 学号 20175313 <Java程序设计>第九周学习总结 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 学号 20 ...

随机推荐

  1. JUnit4在Eclipse中的使用

    测试是项目开发中很重要的一环.实际上,建议的项目前期编写过程是:构思-> 编写单元测试代码-> 编写接口->编写实现类-> 测试实现类->编写主类....JUnit是一个 ...

  2. Coursera scala课程第一周答案

    Exercise 1: Pascal's Triangle The following pattern of numbers is called Pascal's triangle. 1 1 1 1 ...

  3. ORA-00119/ORA-00132

    今天在启动服务器上的ORACLE时遇到如下错误: SQL> startup; ORA-00119: invalid specification for system parameter LOCA ...

  4. .Net Core下通过Proxy 模式 使用 WCF

    .NET Core下的WCF客户端也是开源的,这次发布.NET Core 2.0,同时也发布了 WCF for .NET Core 2.0.0, 本文介绍在.NET Core下如何通过Proxy 消费 ...

  5. php面试题汇总三(基础篇附答案)

    问题 1. 如何访问会话变量(session)? A.通过$_GET B.通过$_POST C.通过$_REQUEST D.通过全局变量 E.以上都不对 2. 哪个函数能让服务器输出如下 header ...

  6. 理解javascript中的回调函数(callback)

    以下内容来源于:http://www.jb51.net/article/54641.htm 最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs ...

  7. JPA 中文乱码问题

    背景 Spring Boot使用JPA,当前端传入到后端的数据为中文的时候,入库变为??? 解决方法 修改下项目的配置文件中DB的配置,新增characterEncoding=utf-8即可 spri ...

  8. Android 开场动画

    呼,忙了两天了这个,找了各种资料,勉勉强强实现我的功能,这个还得改进一下,线程方面的知识没有学到多少,弄了线程画UI有着各种bug,无奈..就这样跳过先了,哪一天有时间在回来搞一下. 正文———— 要 ...

  9. 80C51学习 流水灯

    /* c语言常用预处理命令 1.#define使用 #define A PO 后面不用加分号. #define PI 3.14 2.循环左移右移函数 _crol_(a,b)循环左移函数,a是左移的值, ...

  10. Mybatis映射原理,动态SQL,log4j

    1.理清mybatis中的#和$之间的区别? #{ }:表示一个预处理参数,参数类型不定,是根据传入的参数类型来设定的. 类似于JDBC中的? 特例使用,模糊查询:(针对oracle): and us ...