《像计算机科学家一样思考JAVA》书摘

介绍:这本书很薄,介绍的内容没有系统性,优点是一些名词术语做了解释,概念清晰,适合门外汉当作科普读物
      个人感觉没有多少营养,以下是读书笔记
=======================================================================================
面向对象的特征:
  •     对象通常代表真实世界中的实体
  •     多数的方法都是对象方法,而不是类方法
  •     对象之间的交互是被限制的,不允许一个对象直接访问另一个对象的实例变量
  •     类被组织成树状结构,新类扩展现有类,新类可以添加新的方法,或者替换现有类已有的方法
----------------------------------------------------------------------------------------------------
对象方法和类方法:
类方法以关键字static来识别,不以关键字static开头的方法都是对象方法

调用实例变量:
    在对象方法中,可以隐式地引用实例变量,不用指明实例变量所属的对象
    在类方法中,所有对实例变量的引用都必须是显式的,既是:对象.实例变量

一个类中同时包含对象方法和类方法是容易混肴的,我们需要对类定义进行组织:
    将构造函数放在程序开始,然后定义所有的对象方法,最后定义所有的类方法。
    对象方法可以重名,但他们应该接受不同类型和数量的参数
    main方法是类方法,中间不能用this指示当前对象
    在类方法中直接访问实例变量是非法的
------------------------------------------------------------------------------------------------------
继承:
    继承就是对已有类进行扩展,从而定义新的类型,已有类称为父类,新类称为子类
    优点:在不修改父类的情况下添加方法和实例变量

    子类可以拥有额外的实例变量
    子类可以拥有额外的方法
    子类可以对父类的方法进行重载

类的层级结构:
    所有的类都继承自另外的类,最基本的类是Object类,Object类不包含实例变量,但是提供equals等方法
    没有显式继承他类的类在默认情况下都继承自Object类

书籍推荐:《Head First Design Patterns》
-------------------------------------------------------------------------------------------------------
接口:
    一个接口是一个类定义,这种类的方法只有原型,没有方法体

    原型:也称为规范,指明方法的名字、参数、返回值类型
    方法体:也称为实现,是方法的具体代码
-------------------------------------------------------------------------------------------------------
public 修饰的实例变量和方法意味着可以在其他类或者对象中访问
private。。。对其他类/对象不可见,只能在本类/对象中访问
在大型编程中,对于方法,尽量用纯函数,不修改参数,只求返回值的,除非必要,再在函数中修改参数。

渐进式开发,先大致写出基本功能,再在不同环境中测试,从测试中找到错误,修正源程序。

算法要针对一类问题,而不是特定的问题解决

编写对象应该先写实例变量(基本变量),然后写构造方法,最后写其他的实现

递归方法的常见错误:没有包含基本条件;或者提供了基本条件,但是永远执行不到。这将导致无限递归
思考递归的方法:试图理解整个执行流程;用飞跃的信心,相信每一步都是正确的;---后者好

程序开发策略:
    渐进式开发:    
                      从一个可以工作的程序开始,程序做一些可见的事情
                      每次只增加少量几行代码,每次改动后都进行测试
                      重复以上过程直到达到需求为止
----------------------------------------------------------------------------------------------------------

术语:
包:类的集合,Java中的类通过包来进行组织

AWT:Abstract Window Toolkit 抽象窗口工具包,是Java中最大且最常用的包之一

泛化:将具体问题抽象化,普遍化,模型化,比如时间表示用60进制的本质。让程序很简单。

类变量:在类定义中以static关键字修饰的变量,所有该类的对象共享一份类变量的复制

辅助方法:用于辅助其他方法的小方法

编码:用一种数值体系表示另一组数值,两者之间要构造成一种映射关系

同一性:表示引用相等,即两个引用指向同一个对象

等价性:表示引用指向的对象包含的数值相等

抽象:在更高层面 解释程序的过程,而不是只通过代码本身

实例:某种类的一个对象

实例变量:组成对象的一个命名项。每个对象都维护了其所属类的一份实例变量的拷贝
=============================================================





你可能感兴趣的:(书摘杂谈)