王彪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小时

  • 改进情况:

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

参考资料

原文地址:https://www.cnblogs.com/wbiao21/p/6683353.html