20162323周楠 《程序设计与数据结构》第七周学习总结

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

教材学习内容总结

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

  • 2.动态绑定(后绑定):很多情形下,方法调用可以与方法定义的绑定可以在编译时完成,但对于多态引用,绑定直到运行时才确定下来,需要调用时所指向的对象的类型来确定要用到哪个方法来定义

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

  • 4.使用继承机制的创建多态引用:通过继承实现多态

    引用变量可以指向声明继承于它的任意类的任何对象。

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

  • 5.Java接口的目的及语法

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

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

  • 6.通过接口实现多态

    接口可用来声明对象引用变量

    接口引用可以指向实现这个接口的任意类的任何对象

    方法的参数可以是多态的,这样使方法具备了对其参数进行控制的灵活性

  • 7.多态环境下的面向对象设计

    事件处理:在侦听器和所侦听组件之间建立关系是通过多态完成的

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

  • 问题1:对课本中多态的理解不是很明白
  • 解决方案:通过自己不断地尝试,从内存方面进行理解并结合敲代码终于明白了

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

  • 问题1: 对程序的结果不理解
  • 问题1解决方案:看书查找。如果子类复写了父类的方法,那么调用子类方法的时候,先找子类的方法

代码托管


上周考试错题总结

  • 1.下面哪条命令可以把 f1.txt 复制为 f2.txt

    A .cp f1.txt f2.txt

    C .cat f1.txt > f2.txt

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

  • 2.Linux中,使用()命令可以更改一个文件的权限

    A .attrib

    B .change

    C .chmod

    D .file

    答案:C。file用于查看文件类型,attrib是Windows下的命令,没有change这个命令。

  • 3.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(以上均不是设值方法的头部)

    答案:D.变异器是改变实例变量的值的方法,通常被称为“设置器”。A是访问器方法的标题的一个例子,通常称为“getter”。C是一个构造函数,B是一个类方法。

  • 4.A _______________ variable is shared among all instances of a class(_____变量由类的所有实例共享).

    A .
    static

    B .
    final

    C .
    public

    D .
    private

    E .
    none of the above(以上都不是)

    答案:A.静态变量在类的所有实例之间共享。 最终变量是一个常量,公共变量是可以从对象外部访问的,私有变量是在对象外不能被访问的变量。

  • 5.The ________________ reference always refers to the currently executing object(___引用总是指向当前正运行的对象).

    A .
    null

    B .
    static

    C .
    final

    D .
    actual

    E .
    this

    答案:E。 null引用是不指向任何对象的引用。 其他三个选择不是Java中的特殊参考。

  • 6.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(以上均不是)

    答案:D.算法是一个解决问题的分步解决方案。 UML类图是一种直观地表示类和对象如何交互的方式。 对象聚合是部分由其他对象组成的对象。 类可以被认为是一组对象的蓝图。

  • 7.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(以上均不是)
    答案:D。不需要返回任何数据的方法应该具有指定为返回类型的void。 public方法不能指定其返回类型, A和C指定返回类型,因此它们必须返回该类型的数据。

  • 8.There are times when it is appropriate to return data from a method of a type that is inconsistent with the return type specified in the method header(有时允许方法返回的数据类型和方法头部指定的返回值类型不一致).

    A .
    true

    B .
    false

    答案:B。从方法返回的值必须与方法头中指定的返回类型一致。

-9.如果有以下程序片段:
class Some{
void doService(){
System.out.println("some service");
}
}
class Other extends Some{
@Override
void doService(){
System.out.println("others srrvice");
}
}
public class Main{
public static void main(String[] args){
Other other = new Other();
other.doService();
}
}
以下描述正确的是

A .
编译失败

B .
显示some service

C .
显示other service

D .
先显示some service后显示other service

答案:C

    1. 如果有以下程序片段:
      class Some{
      String ToString(){
      return "Some instance";
      }
      }
      public class Main{
      public static void main(String[] args){
      Some some = new Some();
      System.out.println(some);
      }
      }
      以下描述正确的是

    A .
    显示Some Instance

    B .
    显示Some@XXXX,XXXX为十六进制的数字

    C .
    发生ClassCastException

    D .
    编译失败

    答案:B。

  • 11.下面哪些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

    答案:BC。-b 是以八进制输出

  • 12.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(以上都不正确)
    答案:D。原始类可以称为超类,父类和/或基类。

  • 13.In order for derived classed to have access to encapsulated data members and methods of superclasses, the data members and methods should be declared using the ____________________ modifier(为了能在派生类中引用超类中封装的数据成员和方法,可以使用修饰符____声明).

    A .
    private

    B .
    public

    C .
    protected

    D .
    final

    E .
    static

  • 14.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(不能在程序中调用).

    答案:B。final修饰符限制继承。特别地,被声明为final的类不能具有子类。

  • 15.Which of the following key words indicates a new class is being derived from an existing class? (下面哪个关键字表明新类是从当前类派生的?)

    A .
    super

    B .
    final

    C .
    extends

    D .
    inherits

    E .
    expands

    答案:C。

  • 16.Once a method is overridden in a subclass, the original version can never be referenced from within the subclass(一旦方法被子类重写,原有的方法不能再在子类中引用).

    A .
    true

    B .
    false

    答案:B。

  • 17.如果有以下的程序代码:
    Int x=100;
    Int y=100;
    Integer wx=x;
    Integer wy=y;
    System.out.println(xy);
    System.out.println(wx
    wy);
    在JDK5以上的环境编译与执行,则显示的结果是

    A .
    true、true

    B .
    true、false

    C .
    false、true

    D .
    编译失败

    答案:A。

  • 18.如果有以下的程序代码:
    int[] arr1 = {1, 2, 3};
    int[] arr2 = new int[arr1.length];
    arr2 = arr1;
    for(int value : arr2) {
    System.out.printf("%d", value);
    }
    以下描述何者正确?

    A .
    执行时显示123

    B .
    执行时显示12300

    C .
    执行时出现 ArrayIndexOutOfBoundException 错误

    D .
    编译失败

    答案:A。

结对及互评

点评过的同学博客和代码

思考

在本周的学习中,周一我对上周所学的知识进行了一定的复习,并学习了第九章的书上的一部分内容,本来以为这些代码比较简单,但是在真正敲代码的时候,还是会有一些小毛病,这些错误都是在我看书的时候所没有发现的,对于第九章的学习,我个人觉得还是应该结合视频来学习,先看视频后看书更能够理解。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第四周 812/1447 9/17 32/82
第五周 479/1926 7/24 18/100
第六周 559/2485 9/33 20/120
第七周 630/3115 4/37 18/138

posted on 2017-04-16 13:39  GiggleKV  阅读(177)  评论(8编辑  收藏

导航