zoukankan      html  css  js  c++  java
  • 20162307 第7周学习总结

    20162307 2016-2017-2 《程序设计与数据结构》第7周学习总结

    教材学习内容总结

    关键摘要:

    • 1.多态引用在不同的时候可以指向不同类型的对象

    • 2.多态引用在运行时才将方法调用与它的定义绑定在一起

    • 3.对象的类型,而不是引用的类型,决定调用的是方法的哪个版本。

    • 4.接口是一组抽象方法,所以不能被实例化。

    • 5.继承可适用于接口,所以一个接口可派生于另一个接口。

    • 6.在侦听器和所侦听组件之间建立关系是通过多态完成的。


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

    • 问题:继承如何支持多态性?
    • 解决:上网查找。
    • 通过继承中超类对象引用变量引用子类对象来实现
    //定义超类superA 
      class superA 
      { 
      int i = 100; 
      void fun() 
      { 
      System.out.println(“This is superA”); 
      } 
      } 
      //定义superA的子类subB 
      class subB extends superA 
      { 
      int m = 1; 
      void fun() 
      { 
      System.out.println(“This is subB”); 
      } 
      } 
      //定义superA的子类subC 
      class subC extends superA 
      { 
      int n = 1; 
      void fun() 
      { 
      System.out.println(“This is subC”); 
      } 
      } 
    
      class Test 
      { 
      public static void main(String[] args) 
      { 
      superA a; 
      subB b = new subB(); 
      subC c = new subC(); 
      a=b; 
      a.fun(); (1) 
      a=c; 
      a.fun(); (2) 
      } 
      } 
    

    运行结果:
    This is subB
    This is subC

    上述代码中subB和subC是超类superA的子类,我们在类Test中声明了3个引用变量a, b, c,通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。
    java 的这种机制遵循一个原则:当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。

    代码调试中的问题以及解决过程

    • 问题:敲书上的程序,结果编译运行后会出现很多的错误。
    • 解决:先和书上的代码对照,发现并没有敲错,所以看了同学的博客,更改了代码。最后编译运行成功

    代码托管

    上周考试错题总结

    • 错题1及原因,理解情况

      • 下面哪条命令可以把 f1.txt 复制为 f2.txt ?
        A .cp f1.txt f2.txt
        B .copy f1.txt f2.txt
        C .cat f1.txt > f2.txt
        D .cp f1.txt | f2.txt
        E .copy f1.txt | f2.txt

      • copy是Windows下的命令。cat f1.txt > f2.txt 通过输出重定向实现了复制。

    • 错题2及原因,理解情况

      • Which of the following method headers is most likely a header for a mutator method?(以下哪个方法头部最有可能是设值方法的头部?)
        A .public int getAge()
        B .public double computeSalary()
        C .public Person()
        D .public void setAge(int newAge)
        E .none of these are headers for a mutator method(以上均不是设值方法的头部)
    • 错题3及原因,理解情况

      • A _______________ variable is shared among all instances of a class(_____变量由类的所有实例共享).
        A .static
        B .final
        C .public
        D .private
        E .none of the above(以上都不是)
    • 错题4及原因,理解情况

      • A(n) ________________ is a step-by-step process for solving a problem(___是为了解决问题而进行的一步步的处理过程).
        A .UML diagram(UML类图)
        B .aggregate object(对象聚合)
        C .class(类)
        D .algorithm(算法)
        E .none of the above(以上均不是)
    • 错题5及原因,理解情况

      • All methods (with the exception of constructors) must specify a return type. What is the return type for a method that does not return any values? (所有方法必须指定一个返回值类型(构造方法除外),以下哪个方法的返回值类型不返回任何值?)
        A .int
        B .public
        C .double
        D .void
        E .none of the above(以上均不是)
    • 错题6及原因,理解情况

      • 下面哪些Linux 命令可以ASCII码和16进制单字节方法输出Hello.java的内容?
        A .od -b -tx1 Hello.java
        B .od -tcx1 Hello.java
        C .od -tc -tx1 Hello.java
        D .od -tbx1 Hello.java
      • -b 是以八进制输出
    • 错题7及原因,理解情况

      • The original class that is used to derive a new class using inheritance is called ____________________ (通过继承派生出新类的原有类称为____).
        A .a superclass(超类)
        B .a parent class(父类)
        C .a base class(基类)
        D .all of the above(以上都正确)
        E .neither a, b, nor c(以上都不正确)
    • 错题8及原因,理解情况

      • A class declared as final _________________________________ (声明为final的类_____).
        A .cannot be changed(不能更改).
        B .cannot have subclasses(不能拥有子类).
        C .cannot have superclasses(不能拥有超类).
        D .has several abstract methods(具有几个抽象方法).
        E .cannot be used in a program(不能在程序中调用).

    结对及互评

    • 基于评分标准,我给本博客打分:7分。

    • 参考示例

    点评过的同学博客和代码

    其他(感悟、思考等,可选)

    这周有三堂课,考了两次试,做了一次实验。这周的学习量比较大,实验内容太多。
    每个人对事物的理解程度是不同的,这就导致了学习效率不同,对同一件事付出的时间就是不同的,我们还是要提高我们的学习效率,这样才能节省我们的时间,去扩展我们的视野。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 72/72 1/1 20/20
    第二周 267/339 1/2 18/38
    第三周 297/636 1/3 22/60
    第四周 719/1355 2/5 30/90
    第五周 640/1995 1/6 20/110
    第六周 698/2693 1/7 20/130
    第七周 358/3047 2/9 20/150

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:20小时

    • 实际学习时间:20小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    组合数,错排——HDU-2049
    欧拉函数——POJ-2480
    欧拉函数——HYSBZ
    数论——HYSBZ
    cordova js调用原生
    Backbone js 学习
    最优二叉搜索树 java实现 学习 备忘
    chrome允许加载本地文件
    IOS、Android html5页面输入的表情符号变成了乱码”???“
    创建第一个android应用
  • 原文地址:https://www.cnblogs.com/Tiffany23/p/6691876.html
Copyright © 2011-2022 走看看