博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
201521123009 第5周-继承、多态、抽象类与接口
阅读量:5815 次
发布时间:2019-06-18

本文共 2773 字,大约阅读时间需要 9 分钟。

1. 本周学习总结

1110007-20170325160345440-1782235374.png

2. 书面作业

作业参考文件下载

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

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

//Parent.javapackage com.parent;class Parent{    private int i=1;    protected int j=2;    protected int geti(){        return i;    }    public void getj(){        System.out.println(j);    }}//Other.javapackage com.parent;class Other{    public static void showParentj(Parent p){        System.out.println(p.j);        System.out.println(p.geti());    }    }//Child.javapackage com.parent;public class Child extends Parent{    public static void main(String[] args){        Parent p = new Parent();        Child c = new Child();        c.getParenti();        c.getParentj();        Other.showParentj(p);            }    public void getParenti(){        System.out.println(i);    }    public void getParentj(){        System.out.println(super.j);        System.out.println(j);        System.out.println(geti());        System.out.println(super.geti());    }}

com.parent包Child.java文件不能通过编译。System.out.println(i);这句出现错误。

class Parent{    private int i=1;//父类private改为protected    protected int j=2;    protected int geti(){        return i;    }    public void getj(){        System.out.println(j);    }}

在Eclipse试运行,如图

1110007-20170325161801393-268654627.png
1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。如何更改才能使之正常编译?
不能通过编译,提示错误The type Parent is not visible.,将parent类改为public类即可正常编译。

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

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

Guess改造前,未使用抽象类,只能控制台输出;改造后,使用抽象类,可以在控制台,也可以使用对话框图形界面等输入。
2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?
写一个图形界面的类去继承Guess中的抽象类,然后重写抽象类中的代码。
2.3 结合该例子,你觉得什么时候应该使用abstract?
在类中的方法没有实现时,使用abstract
2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明.
由例子可以看出,输出输入方法变了,环境变了;而不变的是这个抽象类。

Q3:Comparable与Comparator

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

Comparable接口强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表(和数组)可以通过Arrays.sort 进行自动排序;Arrays.sort面向Comparable接口进行编程,所以以可以直接使用
3.2 有了Comparable接口为什么还需要Comparator接口呢?
如果实现类没有实现Comparable接口,又想对两个类进行比较(或者实现类实现了Comparable接口,但是对compareTo方法内的比较算法不满意),那么可以实现Comparator接口,自定义一个比较器,写比较算法。

Q4:面向接口案例分析

阅读Case-StudentDao.zip案例

4.1 画出类关系图,描述每个类与接口的作用。
1110007-20170325171030330-92473462.png

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?

StudenDaoListImplStudentDaoArrayImpl学生信息存储的形式不同。StudenDaoListImpl是用列表实现存储学生信息,支持存取不定长度的对象数组;StudentDaoArrayImpl是用数组存储学生信息,需要已知数组的大小。

Q5:什么是面向接口编程?面向接口编程的好处是什么?

所谓面向接口编程,就是代码是与接口相关联的(比如Comparable接口),而不需要考虑具体的实现类。

只要某个类(如Employee)实现了相关的接口(如Comparable),我们编写的面向接口(如Comparable)的代码就可以适用。

Q6:结对编程:面向对象设计(大作业2-非常重要)(未完成)

6.1

6.2 常用功能描述框架图
1110007-20170325172033393-1401039597.png
6.3 关键代码
6.4 运行界面

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

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

3.1. 码云代码提交记录
1110007-20170325172156346-1373626522.png

3.2. PTA实验

-运用Comparable接口进行排序:使用compareTo的方法,Comparable接口强行对实现它的每个类的对象进行整体排序,实现此接口的对象列表可以通过Arrays.sort 进行自动排序。

转载于:https://www.cnblogs.com/z1450429983/p/6598000.html

你可能感兴趣的文章
开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据
查看>>
git reset 三种用法总结
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>