• Week03面向对象入门


    1. 本周学习总结
      ==========

    1.1 写出你认为本周学习中比较重要的知识点关键词,如类、对象、封装等。

    关键词:对象、类、引用、封装、访问修饰符。

    1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来。





    2. 书面作业

    1.以面向对象方式改造数据结构作业'有理数'(重点)

    1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址。


    git地址

    1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何区别?

    面向过程就是分析出解决一个问题所需要的所有步骤,一步步分析出来,然后用代码把这些步骤一一实现。而面向对象是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为,就像面向对象中,你只需要知道你踩油门汽车可以加速,而不需要他内部的构成等。

    2. 构造函数与初始化块

    2.1 结合PTA 5(构造函数与toString)说明构造函数有什么用?其函数格式有何特征?

    在对象编程语言中,在定义一个类型之后,为了能使用它,必须把这个类型具体化,也就是指定为一个具体的对象。而构造函数就是从定义出发,建立与定义相对应的对象。用计算机语言来说,光有定义是不能使用,必须通过构造函数来分配内存空间给可使用的对象,同时构造函数的名称和类的名是一样的。

    2.2 如果一个类不写构造函数,它有构造函数吗?如果一个类中只有带参的构造函数,它有没有不带参数的默认构造函数?

    如果一个定义类不写构造函数,Java中会默认存在无参构造函数的。

    2.3 查看String类的源代码,找出3个看得懂的String类的构造函数,并使用自己的话描述这3个构造函数的区别。

    1.
    初始化一个新创建的的对象。

    2.
    可以看出使用 String 类型初始化,新 String 实际上与原来的 String 指向同一块内存。

    3.
    参数为char数组,使用java.utils包中的Arrays类复制

    2.4 结合PTA(构造函数与初始化块)说明初始化块与构造函数的异同。并说明,初始化块与构造函数谁先执行?初始化块与静态初始化块有何不同,谁先执行?

    初始化块:是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块,只要对象一建立,就会调用这个代码块。
    构造函数:是给与之对应的对象进行初始化,它具有针对性。
    初始化块先于构造函数执行。
    静态初始化块先于初始化块执行,并且只在首次加载中执行一次,而初始化块每调用一次就执行一次。

    3.代码分析:Math类

    3.1 使用java.lang.Math类的方法时,为什么不需要new出一个Math对象,然后调用该对象上相应的方法?


    可见源码中的方法都是静态方法,所以这部分静态的方法在类加载的时候已经在方法区中申明出来了,不会参与对象实例化的过程,和对象创建没有关系。并且静态的方法都是通过类型直接引用的,和创不创建对象没有关系。

    3.2 如果new Math()会产生什么错误?尝试阅读Math类源代码,分析原因。

    无法运行代码,因为Math类是静态的,无法使用new来创建对象。

    3.3 进一步:你觉得什么样的对象需要new出来才能用,调用什么方法时不必创建相应对象就可以使用?(重点检查)

    当所要创建的对象的类是属于非静态的类,并且其方法都是非静态时,此时就需要new。不过原则上,面向对象,都需要new实例。

    4. 重载Overload

    4.1 什么是重载?什么是构造函数重载?怎么才能区分两个重载的方法?

    重载就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

    ------重载(Overloading)
    构造函数重载:构造函数具有相同的名字,而参数的个数或参数类型不相同。
    可以通过参数来区别这两个重载方法。

    4.2 在java.lang.Math类中举出1个方法重载的例子?


    返回double值的绝对值。

    5. 代码阅读: final

    final修饰的变量不能改变,为什么如下代码却可正常运行?

    final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;

    答:使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的

    --------Java面试题

    6. Java8中的时间日期类:编写函数public static boolean isMondayToFriday()

    功能:判断今天如果是周一到周五,返回true,返回false。main函数中调用该函数,如果为true则输出“工作日+姓名学号”,否则输出"休息+姓名学号"。
    截图:关键代码。
    提示:使用LocalDateTime, DayOfWeek类

    7. 封装

    7.1 结合PTA(形状),请用自己的话简单总结一下面向对象中封装是什么意思?有何好处?

    封装的意思是,通过将方法和类进行处理,控制用户对类的修改和访问数据的程度。对数据的访问只能通过定义的接口来进行。
    封装的好处:
    第一:重用;。
    第二:不必关心具体的实现;。
    第三:面向对象三大特征之一。
    第四,具有安全性。

    7.2 和封装有关的关键字有哪些?

    已经学到的有privatepublic

    8. 结对编程实践

    找一个水平相近的同学完成1-2题实验题。开始编程前,可先对内容进行讨论。写出体验报告,包括以下内容:1.对方姓名。2.所完成的题目。3.感想。4.照片(上次很多同学并未贴照片,请贴上)

    1.与我合作的同学是陈剑波。
    2.一起完成的题目:有理数。
    3.我觉得这次的编程真的是一加一大于二,两个人都有不同的见解,我只考虑求值的过程,而剑波刚好提醒了我要注意分母为0的情况。虽然程序并非很完美,但是都是我们这几天一起努力编写出来的,心满意足

    1. 码云及PTA
      ==========

    3.1. 码云代码提交记录

    3.2 截图PTA题集完成情况图



    需要有两张图(1. 排名图。2.PTA提交列表图)

    3.3 统计本周完成的代码量

    周次 总代码量 新增代码量 总文件数 新增文件数
    1 297 297 5 5
    2 366 366 10 5
    3 411 411 14 4
  • 相关阅读:
    linux系统分析工具续-SystemTap和火焰图(Flame Graph)
    如何使用strace+pstack利器分析程序性能
    MySQL数据类型-decimal详解
    服务器端数据合法性验证:签名sign和口令token原理
    linux系统下php通过php_oci8扩展连接oracle数据库 Nginx
    redis开启远程访问
    cURL函数库错误码说明之PHP curl_errno函数
    权限控制相关模块
    otool
    路由器
  • 原文地址:https://www.cnblogs.com/jmu201621123082/p/7605093.html
Copyright © 2020-2023  润新知