201521123009 第5周-继承、多态、抽象类与接口

1. 本周学习总结

1110007-20170325160345440-1782235374.png

2. 书面作业

作业参考文件下载

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

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

//Parent.java
package 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.java
package com.parent;

class Other{
    public static void showParentj(Parent p){
        System.out.println(p.j);
        System.out.println(p.geti());
    }
    
}

//Child.java
package 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值