学号 20175313 《Java程序设计》第五周学习总结

教材学习内容总结

第六章主要内容

  • 掌握接口的定义

    • 接口声明:interface 接口名
    • 接口体:包含常量的声明和抽象方法。
      • 接口体中只有常量没有变量(public、final、static)
      • 接口体中只有抽象方法没有普通方法(public、abstract)
  • 学会用implements关键字实现接口
    • 实现接口格式:class 类名 implements 接口名
    • 重写接口中的方法
      • 非抽象类:必须重写接口中的所有方法,并且用public修饰。
      • 抽象类:可以重写也可以直接继承。
  • 理解接口回调、多态
    • 接口回调:把可以实现接口的对象的引用赋给接口变量,使得该接口变量可以调用被类实现的接口方法。(类似子类的对象上转型对象)
    • 接口变量无法调用类中的其他的非接口方法。
    • 如果一个方法的参数是接口类型,那么将实现该接口的类的对象作为实参,就可以实现接口回调。
    • 接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口时就可能具有多种形态。

教材学习中的问题和解决过程

  • 问题1:

    将下列(A、B、C、D)哪个代码替换下列程序中的【代码】不会导致编译错误。

A、public int f(){return 100+M;}

B、int f(){return 100;}

C、public double f(){return 2.6;}

D、public abstract int f();

interface Com{
int M = 200;
int f();
}
class ImpCom implements Com{
【代码】
}
  • 问题1理解情况:

    • 接口中的抽象方法默认是public类,类在重写接口方法时不仅要去掉abstract修饰符,给出方法体,而且方法的访问权限一定要用public来修饰。
    • 对于非抽象类实现接口,必须重写接口中的所有方法。
  • 问题2:课后编程题。

  • 问题2解决方案:

    • Animal1.java
    interface Animal1{
    void cry();
    String getAnimalName();
    }
    • Dog1.java
    class Dog1 implements Animal1{
    public void cry(){
    System.out.println("汪汪汪……");
    }
    public String getAnimalName(){
    return "Dog";
    }
    }
    • Cat1.java
    class Cat1 implements Animal1{
    public void cry(){
    System.out.println("喵喵喵……");
    }
    public String getAnimalName(){
    return "Cat";
    }
    }
    • Simulator.java
    class Simulator1{
    void playSound(Animal1 animal){
    animal.cry();
    System.out.println(animal.getAnimalName());
    }
    }
    • ex4.java
    public class ex4{
    public static void main(String[] args) {
    //Animal1 an = new Dog1();
    //Animal1 ani = new Cat1();
    Simulator1 sim = new Simulator1();
    sim.playSound(new Dog1());
    sim.playSound(new Cat1()); }
    }
  • 运行结果截图:

代码托管

(https://gitee.com/xiannvyeye/test)



心得体会

第六章的内容也较少,有了上一周的教训,我周二就开始看了,时间上都还比较充裕,看的也比较透彻。我觉得这周的学习质量还是挺高的。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 13/13 1/4 23/23
第二周 317/330 1/5 22/45
第三周 703/1044 1/6 31/76
第四周 1263/2094 2/8 18/84
第五周 1263/2094 3/11 18/84
  • 计划学习时间:23小时

  • 实际学习时间:24小时

  • 改进情况:合理安排时间,充分利用碎片时间。

参考资料

最新文章

  1. LinkedList<E>源码分析
  2. tf.slice可以用于矩阵也就是图片的切割
  3. Window下生成OpenSSL自签证书
  4. c# 模拟get和post
  5. ABBYY FineReader 12PDF选项卡有保存模式吗
  6. oracle学习 十 数据库的语句优化(持续更)
  7. 深入理解HTML5:语义、标准与样式
  8. [hackerrank]John and GCD list
  9. CSS有用的代码片段
  10. delphi xe5 android sample 中的 SimpleList 是怎样绑定的
  11. go与json
  12. Postman用法简介-Http请求模拟工具
  13. swfupload上传文件问题
  14. Thinkphp常用标签
  15. 初步认识thymeleaf:简单表达式和标签(一)
  16. surfer画世界频率分布图(等高线、地点标注)
  17. mysql:insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决
  18. Linux下安装mysql5.7
  19. Linux 命令的20个实用范例,入门必看!
  20. e787. 用JSpinner实现小时选择

热门文章

  1. python中的__new__与__init__,新式类和经典类(2.x)
  2. 当使用 SelfHost 的 OWIN 承载 SignalR 时,重启 OWIN 后,SignalR 不能正常工作
  3. RabbitMQ 学习专栏
  4. 微信公众号平台上传文件返回错误代码:40005 invalid file type
  5. [转]application.properties详解 --springBoot配置文件
  6. c++ 条件变量
  7. SAP PA Document List
  8. C#实现复杂XML的序列化与反序列化
  9. c#判断是否有网络
  10. spark连数据库