第七周学习总结

20172320 2017-2018-2 《Java程序设计》第七周学习总结

教材学习内容总结

1、继承:继承是支持软件复用的途径之一,比重写类更快捷、更容易且成本低
2、继承在父类和子类之间建立一种“是”关系,即子类是一种更具体的父类版本
3、可见性修饰符封装性public<protected<private
4、super的引用可以调用父类的构造方法,super调用父类构造方法只能在子类中执行,且必须是第一行执行
5、Java的继承方法为单继承,不支持多继承
6、Java存在类层次结构,即一个类的子类可以是一个或多个类的父类

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

  • 问题1:软件复用是啥?
  • 问题1解决方案:书上说继承是支持软件复用的途径之一,并未介绍软件复用是个啥。通过上网搜索了一篇介绍这个的博客了解到软件复用是使用现有软件组件实现或更新软件系统的过程,它可以降低成本和开发时间,产生可靠的软件,实现标准化,在不同应用中保持一致
  • 问题2:super和this的异同
  • 问题2解决方案:书上提到super类似this的引用,但从用法上我没感受到有什么相同的,书上也没提出不同的地方,就上网搜了下
  • 问题3:关于抽象类和抽象方法
  • 问题3解决方案:通过一篇博客,了解了抽象类和抽象方法的一些区别
    抽象方法:在类中没有方法体的方法,就是抽象方法。 抽象类:含有抽象方法的类就叫抽象类。 抽象类中的抽象方法必须被实现! 如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类! 抽象类中的普通方法,可以不必实现。 用abstract来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。 抽象类不能被实例化。 抽象方法只需声明,而不需实现某些功能含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。

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

教材中代码调试有问题先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,如果别人没有提出相同问题,可以编辑文档添加,然后把自己提出的问题复制到下面:

  • 问题1:PP9.1的结果只显示了硬币面值之和,显示不了抛掷结果
  • 问题1解决方案:一开始用数组这样定义的

    以为万事大吉了,就没管了。后来发现少了输出,然后直接System.out了,还是不行。仔细对比了一下,发现自己没用Coin中的方法来投掷,自然没结果。因为我定义了一个数组,还不能X.flip(); X.isHead();, 一开始没想到以为是哪定义错了,看了一遍又一遍都没发现有什么问题。后来才想起这是个数组,需要制定其中的具体的一个才能用flip和isHead来投掷硬币,就改成了这样

代码托管


上周考试错题总结

  • A Java main method uses the parameter (String[ ] variable) so that a user can run the program and supply "command-line" parameters. Since the parameter is a String array, however, the user does not have to supply any parameters.
    A .true
    B .false
    分析:main方法需要参数,以防程序员希望允许用户提供命令行参数。在java命令之后,在命令行输入的任何内容都将被接受为命令行参数。如果是由空格分隔的几个单词,那么每个单词都作为一个单独的字符串数组元素存储。例如,“java foo。class hi there“将在变量[0]和变量[1]中存储“hi”,以供程序使用。
  • Just as arrays can only have a fixed number of elements, set at the time the array is declared, a parameter list also can only have a fixed number of elements, set at the time the method is declared.
    A .true
    B .false
    分析:参数的长度可改变,可变长度参数在定义时用...表示
  • So long as one is only accessing the elements of an ArrayList, its efficiency is about the same as that of an array. It's only when one begins to insert or remove elements towards the front portion of an ArrayList that its efficiency deteriorates.
    A .true
    B .false
    分析:ArrayList是作为数组实现的,只要其中一个只是访问ArrayList的元素,效率与数组的效率是一样的。但是,当对ArrayList的前部分进行插入或删除时,就会发生大量的元素复制,从而降低其效率。
  • If x is a char, and values is an int array, then values[x]
    A .causes a syntax error
    B .causes an Exception to be thrown
    C .casts x as an int based on x's position in the alphabet (for instance, if x is 'a' then it uses 0 and if x is 'z' then it uses 25)
    D .casts x as an int based on x's ASCII value (for instance, if x is 'a' then it uses 97 and if x is 'z' then it uses 122)
    E .casts x as an int based on the digit that is stored in x (for instance, if x is '3' it uses 3) but throws an exception if x does not store a digit
    分析:数组索引必须是一个int值,所以如果x不是int,那么通常值[x]会导致语法错误,但是Java编译器会自动将x转换为int,如果它可以被转换的话。字符通过将char值转换为等效的ASCII值来转换为int类型。因此,如果x是'a',它被转换为int 97,因此值[x]访问值[97]。

    结对及互评

  • 学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 67/67 1/4 20/20
第二周 328/395 1/5 20/40
第三周 523/851 1/6 20/60
第四周 1070/1921 1/7 20/80
第五周 608/2529 1/8 10/90
第六周 608/2899 1/9 20/110
第七周 429/3328 1/10 20/130

参考资料

猜你喜欢

转载自www.cnblogs.com/garolwz/p/8908306.html