• 20162320刘先润第7周学习总结


    学号20162320 《程序设计与数据结构》第7周学习总结

    教材学习内容总结

    • Java实现多态有三个必要条件:继承、重写、向上转型
    • 实现创建多态引用的两种方法:继承和接口
    • 后绑定,多态引用是一个在不同时刻可以指向不同类型对象的引用变量,它在运行时才将方法调用与它的定义绑定在一起(在很多情况下方法调用与定义绑定都是在编译时完成),这个延迟的提交叫做后绑定或动态绑定。
    • 当用某个类名声明一个引用变量时,可以用它指向这个类的任意对象,包括声明继承与它的任意类的任何对象。例如,如果Student类继承于Person类,则
    Person p1 = new Student();
    
    • 接口,表示一组公共的抽象方法,通过这些方法可以与一个对象进行交互,并且不能被实例化。接口使用interface来定义。注:一个类可以实现多个接口,例如class A implements C, D, E,接口中的方法都是public权限
    • 接口层次,继承也可以用于接口,就是从一个接口可以从另一个接口派生而来。通过教材理解,接口的继承和类的继承一样,子接口继承父接口的所有抽象方法和常量
    • 通过接口实现多态,接口名字可用来声明对象引用变量,接口引用可以指向实现这个接口的任意类的对象
    • 软件包的使用,例如我在文件夹chapter9做的一个类就可以用package chapter9,将其放入chapter9的文件夹中,在IDEA中系统自动帮我们省略了这个步骤。但是在虚拟机中做时,编译时需要使用-d参数,该参数的作用是依照报名生成相应的文件夹
    • 包名的命名规范:1.要求包名所有字母小写 2.包名一般情况下,是你的域名要倒过来写 3.一个类的全名应该是包名 + .+ 类名
    • Java中的访问权限,1.public(公共权限)可以修饰类、成员变量和成员函数 2.private(私有权限)可以修饰成员变量和成员函数,只能在本类当中使用 3.default(包级别访问权限)不写权限修饰符,就是default权限,可以修饰类、成员变量和成员函数 4.protected(受保护权限)

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

    • 问题1:为什么教材上的Firm类的例子中的StaffMember类要声明为抽象类,感觉没必要。
      解决方案:我的理解是,声明抽象类的意义是限定不能让它实例化,StaffMember是作为继承中的占位符来辅助多态的对象的。
    • 问题2:类和接口有什么区别,第一次学发现两个的内容基本相同,又有继承的功能,感觉有些混淆。
      解决方案:通过仔细揣摩教材上的知识,发现了唯一的一点区别,就是类可被实例化,而接口是抽象的不能被实例化。这难道就是二者唯一的不同吗,还有没有其他的不同呢,暂时还未想出答案。

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

    • 问题1:图中(char)(message.length();将一个字符强制转化为char类型到底会变成什么?
      解决方案:首先翻阅以前的教材,发现并没有相关解释,只有强制转化为int的示例。没办法,只好将Secret类改编一下,我把原程序中加减shift给去掉了,防止出现随机数,令我惊奇的是打印出的结果竟然是如图所以说char对于字符的强制转化基本是不变的,这就很奇怪了,为什么要这么做呢。
    • 问题2: Printer printer= null是什么意思。
      解决方案:通过研究示例,发现这相当于声明了一个接口类型的引用,但是为什么不用implement来呢,待解决。

    代码托管


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

    上周考试错题总结

    • 错题1:A(n) ________________ is a step-by-step process for solving a problem(___是为了解决问题而进行的一步步的处理过程) 答案:algorithm(算法)
      解决方案:我选的是UML类图,我以为UML类的定义就是反映的过程。其实完全不是,算法是解决问题的一步一步的方法,而UML图是直观地表示类和对象交互的方式。聚合对象是部分由其他对象组成的对象。类可以被看作是一组对象的蓝图。
    • 错题2:A return statement is not required at the end of every method(在方法的结尾,返回语句不是必需的).(正确)
      解决方案:我是根据我以前做的代码来判断的,想起了大部分语句都有return就直接选了错误答案。构造函数或任何用返回类型无效声明的方法都不需要返回语句。
    • 错题3:The ________________ reference always refers to the currently executing object(___引用总是指向当前正运行的对象).(this)
      解决方案:我选的是static,this引用总是引用当前执行的对象。空引用是指不指向任何对象的引用。其他三个选择都不在java特别参考。

    结对及互评

    点评过的同学博客和代码

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

    学了这么多,实际操作编写类这个坎却迟迟过不去,现在连教材的课后练习都很吃力了,希望老师出个PP系列的解析参考一下。
    还有就是发现了一个很好的java辅助学习网站

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 180/180 1/4 15/15
    第二周 465/645 1/5 18/33 学习了scanner
    第三周 456/1101 1/6 17/ 50 学会了如何编写数学公式等
    第四周 620/1734 2/8 40/90 学了条件循环和数组
    第五周 890/2604 1/9 25/115 接近学会了编写类
    第六周 462/3068 1/10 30/145 了解了继承的概念
    第七周 860/3928 2/12 41/186 巩固以往知识
    第八周 1/13

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

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

    • 计划学习时间:30 小时
    • 实际学习时间:41 小时

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

    参考资料

  • 相关阅读:
    module 和 component 的区别
    API、SDK、DLL有什么用?
    app基本控件
    PaaS是什么?
    js回调函数(callback)(转载)
    多语言 SEO
    axure rp 8.0
    整天看用户埋点数据,知道数据是咋来的吗?
    发现恶意ip大量访问 可使用命令进行封禁
    阿里云服务器迁移更改IP,导致网站挂掉
  • 原文地址:https://www.cnblogs.com/lxrlxr/p/6687438.html
Copyright © 2020-2023  润新知