zoukankan      html  css  js  c++  java
  • 王彪20162321 2016-2017-2 《程序设计与数据结构》第6周学习总结

    王彪20162321 2016-2017-2 《程序设计与数据结构》第6周学习总结

    教材学习内容总结

    -1.关键概念

    • 1.继承是从已有类派生一个新类的过程.
    • 2.继承的目的之一是复用已有的软件.
    • 3.继承在父类和子类之间建立了 is-a 关系.
    • 4.保护可见性提供了继承之间最恰当的封装机制.
    • 5.可以使用super引用来调用父类的构造方法.
    • 6.子类可以重写(重定义)继承自父类的方法.
    • 7.一个类的子类可以是一个或多个其他类的父类,这样形成了类层次.
    • 8.公共特性应该放到类层次中尽可能高的位置上.
    • 9.Java的所有类都直接或间接地派生于Object类.
    • 10.Java程序中的每个类都继承类toString和equals方法.
    • 11.抽象类不能实例化,它提供的概念可由其他类来定义.
    • 12.派类于抽象父类的类必须重写父类中所有的抽象方法,否则派生的类认为抽象类.
    • 13.私有成员也被子类继承,但不能通过名字直接引用。不过可以间接引用它们.
    • 14.final修饰符可以用来限制继承.

    -2.重点总结

    • 1.构造方法不能继承.
    • 2.抽象类不能生成对象
    • 3.如果一个类有抽象函数,那么它一定为抽象类.
    • 4.没有抽象函数也可以定义为抽象类.
    • 5.在子类的构造函数当中,必须调用父类的构造函数.

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

    • 问题1:在书上的程序中的某些代码不清楚作用.
        public class Book
        {protected int pages = 1500;    
        public void setPages (int numPages) 
        {pages = numPages;}
        public int getPages (){
        return pages;} 
        }
    

    程序中有一段代码

        {pages = numPages;}
    

    而在Words类实例化时并没有调用此函数,翻阅书发现还有很多相似的程序,不明所以.
    解决过程:和刘先润同时遇到此问题当时都有点懵,任何问题都难不倒实践对吧,我在Words.java程序中调用此函数,发现并没有出现编译错误,而且它更改了成员变量pages的值,顿觉大悟,一个书类,可以有很多种书,文学,科学等,而不同书有不同的页数,这是很符合实际情况的,代码中首先就给pages赋值1500,但实际情况中不可能每本书都是1500页吧,所以设计此函数,反应过来后还挺简单的,每段代码都有它的可取之处。

    • 问题2:理解 我们为了能在派生类中引用而声名一个公有变量,那么这就违背了封装的原则.
      解决过程:
      1.关于封装:一个对象应该是自管理的,即对象的实例数据应该仅由该对象来修改.
      封装提供了一个有效的途径来保护数据不被意外的破坏。
      相比我们将数据(用域来实现)在程序中定义为公用的(public)我们将它们(fields)定义为私有的(privat)在很多方面会更好。
      2.关于保留字public :公有变量与封装的原则相悖,它允许定义数据的类之外的代码访问或修改数据的值.
      3.继承,封装,多态,java封装的概念,理解封装

    • 问题3:重载与重写
      解决过程:
      1.重载:在Java中可以让多个方法使用相同的方法名但带有不同的参数列表.
      2.重写:当子类中定义的方法与父类中定义的方法有相同的名字和签名时,我们说子类重写了父类中的方法.
      3.Java的重写和重载机制

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

    • 问题1:程序8.11中的问题
        public class FoodItem
        {
        final private int CALORIES_PER_GRAM=9;
        private int fatGrams;
        protected int servings;
        ...
        }
    

    变量fatGrams为私有变量,所以他只能在所定义的类中使用,但是

        public class Pizza extends FoodItem
        {
        public Pizza (int fatGrams)
        {
        super (fatGrams,8);
        }
        }
    

    而在子类Pizza中就引用了这个变量,顿觉不明

    • 解决过程:并没有搞清楚,个人认为这两个fatGrams应该表示两个不同的量吧

    代码托管

    结对及互评

    这周主要是在帮助相互理解封装的概念,结对项目还在改进,因为要拿T-shirt衫是吧

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

    这周内容不是很多,但重在理解,分享发一些好地方

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第五周 200/1500 6/11 97/120
    第六周 200/1700 7/11 110/120
    第七周 000/0000 0/13 00/120

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

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

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    Mybatis源码中最重要的几个类
    学习爬虫-运营商积分
    IntelliJ IDEA 最新版 2019.2.4 激活 (持续更新)(含windows和Mac)
    归并排序之求小和
    归并排序
    理解递归
    插入排序
    对数器
    冒泡排序
    mysql 数据库名称,中间带有中划线问题
  • 原文地址:https://www.cnblogs.com/wbiao21/p/6683353.html
Copyright © 2011-2022 走看看