Java编程思想总结(一)对象导论

Java编程思想总结(一)对象导论

1.1 抽象过程

  • 万物皆对象。
  • 程序是对象的集合(即:),他们通过发送消息(调用方法)来告知彼此要做的。
  • 每个对象都有自己的由其他对象所构成的存储(引用其他对象或基本类型,即组合)。
  • 每个对象都拥有其类型。每个类最重要的区别于其他类的特征就是“可以发送什么样的消息给它”(即调用方法)。
  • 某一特定类型的所有对象都可以接受同样的消息。
  • 对象具有状态(成员属性)、行为(成员方法)和标识(引用的名称)。每个对象在内存中都有唯一的一个地址

1.2 每个对象都有一个接口

  • 在程序执行期间具有不同的状态而其他方面都相似的对象会被分组到对象的类中。
  • 每个对象都属于定义了特性和行为的某个特定的类。
  • 类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以可以把类当成是一个数据类型,例如所有浮点型数字具有相同的特性和行为集合。二者的差异在于,程序员通过定义类来适应问题,而不再被迫只能使用现有的用来表示机器中的存储单元的数据类型。
  • 每个对象都只能满足某些请求,这些请求有对象的接口所定义,决定接口的便是类型(即对象能够调用什么方法)
  • 向某个对象“发送消息”(产生请求),这个对象便知道此消息的目的,然后执行对应的程序代码。
  • 为了向对象发送消息,需要声明对象的名称,然后以圆点符号连接一个消息请求

1.3 每个对象都提供服务

  • 当正在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为“服务提供者”,程序本身想用户提供服务,它将通过调用其他对象提供的服务来实现这一目的。
  • 将对象看做都是服务提供者还有一个附带的好处:它有助于提高对象的内聚性(内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合)
  • 每个对象都有一个它所能提供服务的内聚的集合。在良好的面向对象设计中,每个对象都可以很好的完成这项任务,但是它并不试图做更多的事情。

1.4 被隐藏的具体实现

  • 将程序开发人员按照角色分为类创建者(那些创建新数据类型的程序员)和客户程序员(那些在其应用中使用数据类型的程序员)是大有裨益的。客户端程序员的目标是手机各种用来实现快速开发应用的类。类创建者的目标是构建类,这种类只想客户端程序员暴露必需的部分,而隐藏其他部分
  • 访问控制的一个存在原因就是让客户端程序员无法触及他们不应该触及的部分——这部分对于数据类型的内部操作是必须的,但并不是用户解决问题所需的接口的一部分
  • 访问控制第二个存在原因是允许库设计者可以改变内部的工作方式而不用担心会影响到客户端程序员

1.5 复用具体实现

  • 最简单的复用某个类的方式就是直接使用该类的一个对象,还可以将哪个类的一个对象置于某个新的类中。我们称其为“创建一个成员对象”。新的类可以由任意数量,任意类型的其他对象以任意可以实现新的类中想要的功能的方式所组成。因为是以现有的类合成新的类,所以称为组合
  • 组合带来了极大的灵活性。新类的成员对象通常被声明为private,使得使用新类的客户端程序员不能访问他们。这也使得你可以在不干扰现有客户端代码的情况下,修改这些成员。也可以在运行时修改这些对象,以实现动态修改程序的行为。

1.6 继承

  • 在创建了一个类后,及时另一个类与其具有相似的功能,你还是得重新创建一个新类。如果我们能够以现有类为基础,复制它,然后通过添加个修改这个副本来创建新类就要好多了。通过继承便可以达到这样的效果。
  • 一个基类型包含其所有导出类型所共享的特性和行为。可以创建一个基类型来表示某些对象的核心概念,从基类型来导出其他类型,来表示此核心可以被实现的各种不同方式。
  • 当继承现有类型时,也就创造了新的类型。这个新的类型不仅包括现有类型的所有成员(尽管private成员被隐藏了起来,并且不可访问)。PS:所有private属性和方法都能被继承
  • 有两种方法可以使基类与导出类差生差异:一是直接再导出类中添加新方法;二是改变现有基类方法的行为,也是最重要的方法,称为覆盖
  • 继承只覆盖基类的方法(而并不添加在基类中没有的新方法),导出类和基类有完全相同的接口,导出类可以完全被替代为一个基类对象(导出类对象和基类对象可以调用的方法是一样的)。
  • 有时必须在导出类型中添加新的接口元素,这样也就扩展了接口。这个新的类型仍然可以替代基类,但是这种替换并不完美(父类引用指向子类对象,则子类对象只能调用父类中已有的方法)。

1.7 伴随多态的可互换对象

  • 编译器不可能产生传统意义上的函数调用,一个非面向对象编程的编译器产生的函数调用会引起所谓的前期绑定(即在编译期间就确定了运行时将调用哪段代码)
  • 当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用的方法的存在,并对调用参数和返回值执行类型检查(无法提供此类保证的语言被称为是弱类型的),但是还不知道将被执行的确切代码。

1.8 单根继承结构

  • 所有类都继承于顶级父类Object

1.9 容器

  • 一种对象类型,这种对象类型持有其他对象的引用,称为容器(也称为集合),可以再运行期间动态的改变容量大小
  • 不同类型的容器提供了个不同的接口和外部行为。
  • 不同的容器由于底层结构的不同,对某些操作具有不同的效率(如ArrayList和LinkedList)。
  • 根据不同的情况选择不同的容器,如在一开始使用LinkedList构建程序,而在优化系统性能时改用ArrayList。接口List所带来的抽象,把在容器之间进行转换时对代码产生的影响降到最小限度。
  • 参数化机制(即泛型),可以自动定制作用于特定类型上的类,避免向上向下转型带来的资源消耗和安全性问题。

1.10 对象的创建和生命周期

  • java只允许在堆上创建对象(通过new关键字),并且有垃圾回收器以守护线程的方式在适当的时候自动清理不再被使用的对象。

1.11 异常处理:处理错误

  • 异常提供了一种从错误情况进行可靠恢复的途径,现在不再是只能退出程序,你可以经常进行校正,并恢复程序的执行,这些都有助于编写出更健壮的程序。

1.12 并发编程

  • 程序能够停下正在做的工作,转而处理某个其他问题。
  • 有时中断对于处理时间性强的任务是必须的,但是对于大量的其他问题,我们只是想把问题分割成多个可独立运行的部分(任务),从而提高程序的响应能力。这些彼此独立运行的部分称之为线程,上述概念被称为“并发”。
  • 多线程带来的便利之一是程序员不再关心机器上是由多个处理器还是一个处理器。
  • 某个任务锁定某项资源,完成其任务,然后释放资源锁,使其他任务可以使用这项资源,防止多个线程同时访问同一个资源时带来的线程安全问题

1.13 Java与internet

  • 此处省略一万字。。。

原文地址:https://www.cnblogs.com/xiaohang123/p/11992747.html

时间: 2024-08-05 20:14:35

Java编程思想总结(一)对象导论的相关文章

学习java编程思想 第一章 对象导论

一.面向对象的五个基本特性: 1.万物皆为对象.将对象视为奇特的变量,他可以存储数据,还可以要求它在自身上执行操作. 2.程序是对象的合集,他们通过发送消息告诉彼此所要做的. 3.每个对象都有自己的由其他对象所构成的存储.换句话说,可以通过创建包含现有对象的包的形式来创建新类型的对象. 4.每个对象否拥有其类型.每个类最重要的特性就是"可以发送什么样的消息给它". 5.某一特定类型的所有对象都可以接受同样的消息. 二.在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为&qu

Java编程思想(九) —— 持有对象(2)

11)Map 作者说将对象映射到其他对象的能力是解决编程问题的杀手锏. 确实,例如查看随机数的分布,如果真是随机数的话,那么10000次产生20以内的随机数,每个数字出现的次数应该是相近的. public class TestMap { public static void main(String[] args) { Map<Integer,Integer> map = new HashMap<Integer,Integer>(); Random r = new Random(47

Java编程思想(八) —— 持有对象(1)

书中的原标题是--holding your object,把握你的对象,译者翻译成持有对象.这是用的最多的类之一. 作者说的,如果一个程序包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序.确实,如果数组大小已知,那么就很简单了. 除了数组,Java提供了容器类来holding object. 1)泛型和类型安全的容器 ArrayList,可以自动扩充大小的数组,add插入对象,get访问对象,size查看对象数目. class Apple{} public class Box

Java编程思想笔记(对象)

今天是七夕,猿选择拜读圣经.    抽象过程:(1)万物皆为对象.(2)程序是对象的集合(它们通过发送消息来告知彼此所要做的,要想请求一个对象,就必须对该对象发送一条消息.)(3)每个对象都有自己的由其他对象所构成的存储.(包)(4)每个对象都拥有其类型(可以发送什么样的消息给它)(5)某一特定类型的所有对象都可以接收同样的消息. 每个对象都有一个接口(class):每个对象都只能满足某些请求,这些请求由对象的接口所定义,决定接口的便是类型.接口确定了对某一特定对象所能发出的请求. 每一个对象都

Java 编程思想 Chapter_14 类型信息

本章内容绕不开一个名词:RTTI(Run-time Type Identification) 运行时期的类型识别 知乎上有人推断作者是从C++中引入这个概念的,反正也无所谓,理解并能串联本章知识才是最重要的 本章的内容其实都是为类型信息服务的,主要内容有 一.Class对象 问题: 1.Class对象的创建过程是怎么样的 2.Class对象有哪几种创建方式,之间有什么差异 3.使用泛型 在了解类型信息之前,需要了解class对象 创建class对象,需要先查找这个这个类的.class文件, 查找

【java编程思想--学习笔记(四)】对象导论

写这篇博客的前言: 长话短说,我希望通过阅读<java编程思想>来使我的代码 简洁可用 . 目的的层次不同,首先具体的目标是,了解Java的特性和巩固Java的基础. 更抽象的目的如下: 1.期待以巩固基础的方式,使代码优美,简洁,高效. 2.使自己写的模块能够开放适度,好用. 3.形成一种对代码是否优美的审美观. 于是<Java编程思想>第一章 对象导论 由此开始. 1.1 抽象过程 java 相对于命令式语言的优势在于只针对于待解问题建模.后者所做的主要抽象要求所做问题基于计算

【Java编程思想】一、对象导论

作为一个电子专业的人,在学习了将近3年的嵌入式技术后,决定投奔移动互联网,在互联网大潮中急流勇进! 为了学习OOP(Object-oriented Programming),为了转向移动互联网,我决定开始学习android开发,那么就从Java开始吧! Java的学习资料很多,在研究几天之后,决定从<Java编程思想>这本书开始. 而在这本书之前,我已经看完了一个培训导师的Java4Android的Java教学视频,看的很快,因为我学过C和C++. 但我的Java水平依旧很差,主要在于面向对象

JAVA编程思想学习笔记——第一章 对象导论

搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的集合,它们通过发送消息来告诉彼此所要做的 3.每个对象都由自己的由其它对象所构成的存储 4.每个对象都拥有其类型 5.某一特定类型的所有对象都可以接收同样的信息  单根继承结构 所有的类都继承自单一的基类,Object.在单根集成结构中的所有对象都具有一个公用接口,所以他们归根到底都是相同的基本类型.单根集成

Java编程思想 4th 第2章 一切都是对象

Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情在类对象中完成. 在Java中,使用引用来操纵对象,在Java编程思想的第四版中,使用的术语是"引用(reference)",之前有读过Java编程思想第三版,在第三版中,使用的术语是"句柄(handle)",事实上,我觉得第三版的术语"句柄"更加形象传神,就像你用一个