Think in java随手笔记--------对象导论

不知不觉看了Think in java已经半个月了,学到了不少的东西,作为一个java和Android入门的小白,看这本被称为圣经的编程思想有点吃力,特别是第一章---对象导论,特别多的概念,看着看着就会搞的迷迷糊糊,为了造福更多的像我一样的小白,再次特地写了一片简单的随笔来分享对象导论的知识笔记,个人感觉笔记不全但是足够入门理解了,大家可以提提建议,如果有错误或者不足,评论---评论---评论,谢谢!!

对象导论

  • 1.抽象过程
    • 程序可以通过添加新类型的对象,使其自身适用于某个特定的问题。
    • OOP(面向对象程序设计)允许问题来描述问题,而不是根据运行解决方案的计算机来描述问题。
    • 面向对象程序设计的5个基本特性
      • 万物皆为对象
      • 程序是对象的集合,他们通过发送消息来告诉彼此所要做的
      • 每个对象都有自己的由其他对象所构成的存储
      • 每个对象都拥有其类型
      • 某一特定类型的所有对象都可以接收同样的消息
  • 2.每个对象都有一个接口
    • 接口确定了对某一特定对象所能发出的请求
    • 满足请求的代码与隐藏的数据一起构成了实现
  • 3.每个对象都提供服务
    • 当在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为“服务提供者”。将对象看作是服务提供者还有一个好处:它有助于提高对象的内聚性。高内聚性是软件设计的基本要求之一:这意味着一个软件构件(例如一个对象,当然它也有可能是指一个方法或一个对象库)的各个方面“组合”的很好。
  • 4.被隐藏的具体实现
    • 程序开发人员:
      • a)类创建者(创建新数据类型的程序员)
      • b)客户端程序员(那些在其应用里使用数据类型的类消费者)
    • 在任何关系中,具有关系所涉及的各方都遵守的边界是十分重要的事情。
    • 访问控制的原因
      • 让客户端程序员无法触及它们不应该触及的部分——这些部分对数据类型的内部操作来说是必须的,但并不是用户解决特定问题所需的接口的一部分。
      • 允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。(如果接口和实现可以清晰地分离并得以保护,那么你就可以轻而易举地完成这项工作)
    • Java用三个关键字在类的内部设定边界:public、private、protected
      • public:表示紧随其后的元素对任何人都可用
      • private:类内部可以访问
      • protect:类内部可以访问,继承该类的也可以访问
  • 5.复用具体实现
    • 代码复用是面向对象程序设计语言所提供的最了不起的优点之一。
    • 继承(is-a)与组合(has-a)都是复用的方法。在考虑复用的时候,应该首先考虑组合,因为它更加简单灵活,在必需使用继承的场合再使用继承。
  • 6.继承
    • 继承的意义在于:以现有类为基础,通过添加和修改创建出新的类。新的类型不仅包括现有类型的所有成员(尽管private成员不可见),而且复制了基类的接口。导出类与基类具有相同的类型。所以可以发送给基类对象的消息同时也可以发送给导出类对象。
    • 使基类和导出类产生差异的方法有两种:
        1. 添加新方法
        1. 覆盖原有的方法
    • is-a和 is-like-a:
      • is-a:只覆盖基类的方法而不添加新方法。
      • is-like-a:添加新方法。
  • 7.伴随多态的可互换对象
    • 有时我们希望把一个对象不是当成特定的类型,而是当成其基类对象来对待。这种将导出类看作它的基类的过程称为上转型。
    • 在对这个对象执行某个方法时,我们只有到运行的时候才确定哪些代码被调用,这就是“后期绑定”。
    • 在某些语言中,必须明确地声明希望某个方法具备后期绑定属性所带来的灵活性(C++是使用virtual关键字来实现的)。在这些语言中,方法在默认情况下不是动态绑定的。而在Java中,动态绑定是默认行为,不需要添加额外的关键字来实现多态。
  • 8.单根继承结构
    • Java中所有的类都继承自同一个基类,这个基类的名字就是Object。
    • 单根继承结构有许多的好处:保证了所有的对象都具备某些功能,因此可以在每个对象上执行某些基本的操作,所有对象都可以很容易地在堆上创建,参数传递也得到了极大的简化。Java的垃圾回收器就是基于单根继承结构才得以实现的。
  • 9.容器
    • Java的标准库中包含了大量的容器,不同的容器提供了不同类型的接口和外部行为,不同容器对于某些操作具有不同的效率。
    • 范型(参数化类型),对创建的容器指定保存对象的类型,以此来避免下转型的不安全。
    • 需要对容器有所选择的与原因如下:
      • 1)不同容器提供了不同类型的接口和外部行为.
      • 2)不同容器对于某些操作具有不同的效率。
    • 参数化类型机制:参数化类型就是一个编译器可以自动定制作用于特定类型上的类,在java中它成为范性。一对尖括号,中间包含类型信息,通过这些特征就可以识别对范性的使用。
  • 10.对象的创建和生命期
    • 垃圾回收器“知道”对象何时不再被使用,并自动释放对象占用的内存。
      • 原因一:所有对象都继承自单根基类
      • 原因二:只能以一种方式创建对象(在堆上创建)
  • 11.异常处理:处理错误
    • 异常是一种对象,他从出错地点被抛出,并被专门设计用来处理特定类型错误的相应异常处理器"捕获"。
  • 12.并发编程
  • 13.java与Internet
  • 14.总结
    • 过程型语言:数据定义和函数调用,这些程序总是容易把人搞糊涂,因为他们使用的表示术语更加面向计算机而不是你要解决的问题。
    • 面向对象语言:
      • 1)用来表示问题空间概念的对象(而不是有关计算机表示方式的相关内容)。
      • 2)发送给这些对象的用来表示在此空间内的行为的消息。

你可能感兴趣的:(Think in java随手笔记--------对象导论)