201521123048 《Java程序设计》第5周学习总结
1. 本周学习总结
1.1 尝试使用思维导图总结有关多态与接口的知识点。

2. 书面作业
1.代码阅读:Child压缩包内源代码
//child
public class test 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());
    }
}
//parent
class Parent{
    private int i=1;
    protected int j=2;
    protected int geti(){
        return i;
    }
    public void getj(){
        System.out.println(j);
    }
}
//other
class Other{
    public static void showParentj(Parent p){
        System.out.println(p.j);
        System.out.println(p.geti());
    }
}
//OutOfParentPackage
import com.parent.*;
public class OutOfParentPackage{
    public static void showParentj(Parent p){
        System.out.println(p.j);
        System.out.println(p.geti());
        p.getj();
    }
}
1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。
不能编译通过,出错语句是System.out.println(i);出错原因:父类i是private修饰的,所以父类的i对于子类来说是不可见的,父类中的i的private必须改成protected才能执行。运行结果如下

1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。
answer不能通过编译,会显示The type Parent is not visible ,因为Parent类前面没有任何访问指定词,所以默认是包访问权限,而OutOfParentPackage又在Parent包之外,所以无法访问到。
1.3 回答:如果为了访问到protected修饰的属性或方法应该怎么办?
将Parent的类型更改为public即可正常编译
2.abstract进阶:阅读GuessGame抽象类的设计与使用源代码
//改造前
package cc.openhome;
import java.util.Scanner;
public class Guess {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number = (int) (Math.random() * 10);
        int guess;
        do {
            System.out.print("猜数字(0 ~ 9):");
            guess = scanner.nextInt();
        } while(guess != number);
        System.out.println("猜中了...XD");
    }
}
//改造后
package cc.openhome;
public abstract class GuessGame {
    public void go() {
        int number = (int) (Math.random() * 10);
        int guess;
        do {
            print("输入数字:");
            guess = nextInt();
        } while(guess != number);
        println("猜中了");
    }
    public abstract void print(String text);
    public abstract void println(String text);
    public abstract int nextInt();
}
2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?
好处是:改造前只能从控制台输出,改造后使用抽象类,可以在控制台还有对话框图形界面等输入,也可根据实际需求在不同界面下输入输出
2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?
重新设计一个图形界面,建立一个新的类去继承上面提到的抽象类,并重写抽象方法。
2.3 结合该例子,你觉得什么时候应该使用abstract?
当程序的某些功能未定时或具体的实现方法不清楚的情况下,可以使用abstract起到一个提纲的作用方便以后的编写;
2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。
不变的是GuessGame这个抽象类即代码实现的功,变得是输入输出方式发生了改变,即环境发生了变化。abstract作为抽象类,它增强了代码的弹性,方便以后由于外界的原因进行改写。未被继承的抽象类是没有意义的,只有实现了抽象类并应用,抽象类才有存在的意义。
3.Comparable与Comparator
3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?
:Comparable接口让我们可以把相同对象进行比较,又因为Arrays.sort是面向Comparable接口进行编程,即面向接口编程,所以可以直接使用Arrays.sort对其进行排序。
3.2 有了Comparable接口为什么还需要Comparator接口呢?
因为Comparable是内部比较,Comparator是外部比较,从一定程度上说Comparator接口是对Comparable接口功能的一种补充。
4.面向接口案例分析
阅读Case-StudentDao.zip案例
4.1 画出类关系图,描述每个类与接口的作用。

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?
StudenDaoListImpl是用列表实现存储信息,支持存取不定长度的对象数组;StudentDaoArrayImpl是用数组存储信息,且需已知数组的大小。
5.什么是面向接口编程?面向接口编程的好处是什么?
结合题目3与4中的Test.java的代码讨论分析。不要百度原封不动照搬!
面向接口编程就是先把需求提取出来,作为接口。需求具体实现通过该接口的实现类来完成。当需求变化时,只需编写新的实现类不需要改写现有代码,减少对系统的影响。就像是一个应对需求而改变的程序框架,它可以在已有的程序中,根据用户的需求做出相应的改变达到用户的要求。所以面向接口编程就是将接口与实现相分离,方便扩展,可维护性强,从而提高程序的灵活性。
3. 码云上代码提交记录及PTA实验总结
3.1. 码云代码提交记录

3.2. PTA实验
实验总结
1.运用Comparable接口进行排序,对Comparable接口里Arrays.sort的应用。还有运用compareTo时返回值的算法。 2.了解Comparator的方法,但当对年龄进行排序的时候,还是要编写NameComparator类和AgeComparator类这两类,用于多样的排序。排序时使用两个Arrays.sort进行排序。
201521123048 《Java程序设计》第5周学习总结的更多相关文章
- 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 ... 
随机推荐
- ssh自学笔记
			Ssh自学笔记 Ssh简介 传统的网络服务程序,如:ftp.pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据.而且,这些服务 ... 
- golang的闭包和普通函数调用区别
			先看一段程序 package main import ( "fmt") func main() { a := []int{1, 2, 3} for _, i := range ... 
- 【每天一道算法题】时间复杂度为O(n)的排序
			有1,2,……一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度为O(1),使用交换,而且一次只能交换两个数. 这个是以前看到的算法题,题目不难.但是要求比较多,排序算法中,时间 ... 
- 第6天:DIV+CSS页面布局实战
			今天我从早上9:00写代码一直写到下午18:00,写的我差点抑郁了,还好最后终于写出了一个完整页面,没有做动画效果,就是练习了一下DIV+CSS布局,做的是福务达(www.zzfwd.cn)的主页,真 ... 
- Random问题
			Unity添加C#脚本,打不出来Random.Next,原因是Random自动引用了UnityEngine命名空间,在使用Random的时候要要这么写:System.Random ran=new Ra ... 
- Eclipse 安装插件(aptana、svn 、git、Java EE、JSHint)
			转发9 1.安装 aptana 插件: * 依次点击:Help -> Install New Software... -> Add * 输入:http://download.aptan ... 
- 【Js应用实例】限制上传图片大小
			需求:前端页面开发中,常遇到图片上传的需求,一般要求限制图片格式及大小. 说明:这里就把实现此功能所需代码贴出来,供同志们参考,也方便我以后复用. 要点:1.处理 类型type为file的输入元素的v ... 
- 关于IE浏览器的一些思路
			首先说说我对IE的看法: 第一感觉倔强.孤僻特立独行.(总是和别人不一样,是初学者的噩梦) 第二感觉个性(每个版本都需要你去用不同的代码去适配她) 虽然现在IE已经升级到了11相对于以前的IE8,IE ... 
- 移动端touch事件 || 上拉加载更多
			前言: 说多了都是泪,在进行项目开发时,在上拉加载更多实现分页效果的问题上,由于当时开发任务紧急,所以就百度找了各种移动端的上拉下拉 实现加载更多的插件.然后就留下了个坑:上拉加载的时候会由于用户错误 ... 
- 聊一聊Redis的数据结构
			如果没有记错的话,应该是在两个月前把 我们经常看到此类的文章: Redis的五种数据结构 Redis的数据结构以及对应的使用场景 其实以数据结构这个词去说明Redis的String.Hash.List ... 
