• 20182318 2019-2020-1 《数据结构与面向对象程序设计》第5周学习总结


    20182318 2019-2020-1 《数据结构与面向对象程序设计》第5周学习总结

    教材学习内容总结

    • 继承

    继承是从已有类派生一个新类的过程
    继承的目的之一是复用已有的软件
    继承在父类与子类之间建立了is-a的关系
    类的继承格式
    class 父类{};
    class 子类 extends 父类{};
    interface 父类{};
    class 子类 implements 父类{};

    • super和this

    super:可以通过super来实现对父类的访问,用来引用当前对象的父类
    this:指向自己的引用

    • 构造函数

    • object类

    object类在java标准类库java.lang包中定义

    • 方法重载:

    大大提升代码的利用率,是总体结构更为精简

    • protected修饰符

    (为了让子类能够访问并且不违反封装性原则)。父类中的变量和方法被声明为protected可见性时,子类就可以使用。

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

    问题1:为什么Java中main函数是静态?
    问题1解决方案:main函数其实也是所在类的一个方法,就比如一个类是test,那么该类的main其实就是test.main(String[] args),众所周知如果一个方法不是静态的,则要先实例化该类,比如要这样 A a=new A();
    然后才能调用 a.main();

    而这对于运行一个程序的主函数来说是不现实的,所以比如把main函数定义为static,使a.main()可以直接被调用。

    因此,java规定了main函数必须是静态的

    问题2:构造方法和构造函数的用处和特别
    问题2的解决方案:

    • 构造方法的作用:

    构造方法作用:
    1).创建对象,凡是必须和new一起使用.

    2).对对象进行初始化.

    • 构造函数与普通函数的区别:

    (1). 一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。

    (2). 构造函数是在对象建立时由 jvm 调用, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。

    (3). 普通函数可以使用对象多次调用,构造函数就在创建对象时调用。

    (4). 构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可

    • 构造函数要注意的细节:

    (1). 当类中没有定义构造函数时,系统会指定给该类加上一个空参数的构造函数。这个是类中默认的构造函数。当类中如果自定义了构造函数,这时默认的构造函数就没有了。
    备注:可以通过 javap 命令验证。
    (2). 在一个类中可以定义多个构造函数,以进行不同的初始化。多个构造函数存在于类中,是以重载的形式体现的。因为构造函数的名称都相同。构造函数没有返回值类型。

    • 构造代码块:

    构造代码块作用:给所有的对象进行统一的初始化。
    构造函数没有返回值类型。

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

    • 问题1:客户端中“cobar”显示红色,且按照小灯泡指示无法解决

    • 问题1解决方案:原来是客户端和服务器不在同一个网络上。也就是说客户端没有与服务器建立网络接口,导致两者之间信息无法传递。在客户端中将服务器的相应的IP地址输入即可

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    1. The instruction super( ); does which of the following?

    A
    .
    calls the method super as defined in the current class

    B
    .
    calls the method super as defined in the current class'parent class

    C
    .
    calls the method super as defined in java.lang

    D
    .
    calls the constructor as defined in the current class
    E
    .
    calls the constructor as defined in the current class'parent class
    正确答案: E 你的答案: B

    答案解析:超指令表示对当前类的父类中某些内容的调用。因为没有消息,只有super(),所以它是父类构造函数的调用。

    1. Java does not support multiple inheritance, but some of the abilities of multiple inheritance are available by

    A
    .
    importing classes

    B
    .
    implementing interfaces

    C
    .
    overriding parent class methods

    D
    .
    creating aliases

    E
    .
    using public rather than protected or private modifiers

    正确答案: B 你的答案: E

    答案解析:因为一个类可以实现任意数量的接口,所以这个类本质上使用接口类,就好像这些接口是在这个类中定义的一样。这个类继承了接口的方法和常量。此外,该类可以扩展另一个类,从而直接或间接地继承多个类。这与多重继承并不完全相同,但它与Java的概念非常接近。

    1. All classes in Java are directly or indirectly subclasses of the ________ class.

    A
    .
    Wrapper

    B
    .
    String

    C
    .
    Reference

    D
    .
    this

    E
    .
    Object

    正确答案: E 你的答案: D

    答案解析:Java要求所有的类都有一个父类。如果一个类没有扩展另一个类,那么默认情况下,它会扩展对象类。因此,对象类是Java中所有其他类的父类或祖先。

    结对及互评

    • 继承中子父类使用的讨论
    • 迭代器的使用

    点评:

    • 博客中值得学习的或问题:

    • 内容丰富

    • 问题详尽

    • 参考示例

    点评过的同学博客和代码

    • 本周结对学习情况
    • 上周博客互评情况

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

    学习还需下真功夫
    我太难了,感觉自己脑子不够用

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    第五周 453/1000 3/7 22/60

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

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

    • 计划学习时间:24小时

    • 实际学习时间:20小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    [HDU 1003] Max Sum
    Codeforces
    2016 年宁波工程学院第七届ACM校赛题解报告
    [DP] Light Oj 1017 Brush(III)
    GDUT-校赛-积水积木
    1031 Hungar的得分问题(二)
    HDU 1506 Largest Rectangle in a Histogram
    lightoj 1033 Generating Palindromes
    网络编程总结
    生产者消费者模型
  • 原文地址:https://www.cnblogs.com/1400694592qq/p/11631813.html
Copyright © 2020-2023  润新知