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


    学号 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小时

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

    参考资料

  • 相关阅读:
    洛谷P1762 偶数
    复习1
    zoj3329 One Person Game
    poj2096 Collecting Bugs
    hdu4035 Maze
    Cogs 2856. [洛谷U14475]部落冲突
    洛谷P2474 [SCOI2008]天平
    洛谷P3802 小魔女帕琪
    清北刷题冲刺 11-03 p.m
    清北刷题冲刺 11-03 a.m
  • 原文地址:https://www.cnblogs.com/xiannvyeye/p/10605497.html
Copyright © 2020-2023  润新知