总觉得书中太啰嗦,看完总结后方便日后回忆,本想偷懒网上找别人的总结,无奈找不到好的,只好自食其力,尽量总结得最好。

第一章  对象导论

看到对象导论觉得这本书

目录:

1.1 抽象过程
1.2 每个对象都有一个接口
1.3 每个对象都提供服务
1.4 被隐藏的具体实现
1.5 复用具体实现
1.6 继承
1.7 伴随多态的可互换对象
1.8 单根继承结构
1.9 容器
1.10 对象的创建和生命期
1.11 异常处理:处理错误
1.12 并发编程
1.13 Java与Internet
1.14 总结

觉得看完终于要精通Java了,然而本章只是介绍开发方法概述在内的OOP的基本概念,了解对象的重要性。

1.1 抽象过程

通过其他语言的缺点来说明面向对象语言的好。

汇编语言是对底层机器的轻微抽象、命令式语言(如C、BASIC)是对汇编语言的一种抽象,汇编语言直接控制计算机的硬件,命令式语言则基于计算机结构解决问题。OOP语言基于问题的结构解决问题,不会受限于任何特定类型的问题。

1.2 每个对象都有一个接口

接口:确定了对某一特定对象所能发出的请求      对象:类型名称

看文字描述已经上升到哲学问题,从下面例子很好理解。

Light lt = new Light(); //对象
lt.on;//接口向对象发出请求

1.3 每个对象都提供服务

好处:1、有助于提高软件的内聚性   2、每个对象都可以很好的完成一项任务,但是它并不试图做更多的事情。

理解:设计一个音乐播放器,有歌词显示、播放,暂停、背景显示(服务),这时不要只提供一个对象(它并不试图做更多的事情),可以提供三个对象,完成三个服务,三个对象提供三个服务完成一个音乐播放器(内聚性)。

1.4 被隐藏的具体实现

从Github下载一个框架,我的目标是实现快速应用开发,框架只需向我提供方法的调用即可,其他的隐藏了也不会影响我的调用。

访问权限:public > protected(包+基类) > 包访问权限(没有关键词时默认) > private

1.5 复用具体实现

复用指在一个类中使用继承或者组合。

  • 继承 ----is a 的关系     荔枝是水果
  • 组合 ----has a 的关系   有一种睡觉的方式是趴着

1.6 继承

从父类中派生出子类,子类能吸收父类的数据属性和行为,并能扩展新的能力。

1.7 伴随多态的可互换对象

class Shape{
draw();
erase();
move();
getColor();
setColor();
}
void doSomething(Shape shape){
shape.erase();
//...
shape.draw();
} Circle circle = new Circle(); //父类为Shape
Triangle triangle = new Triangle(); //父类为Shape
Line line = new Triangle(); //父类为Shape
doSomething(circle);
doSomething(triangle);
doSomething(line);

对doSomething的调用会自动地正确处理,而不管对象的确切类型(可互换对象)。

doSomething(Shape shape)的执行是指你是Shape类或者父类为Shape,而不是你是Circle类就执行这样,你是Triangle 类就执行那样。理解了可以去看设计模式之策略模式。

这里还涉及到向上转型,如下图:

1.8 单根继承结构

1、所有类都继承自单一的基类

public class JianCheng extends Object {
}
public class JianCheng {
public static void main(String[] args) {
JianCheng jiancheng= new JianCheng();
System.out.println(JianCheng instanceof Object);
}
}

输出:true     //说明 JianCheng 类默认继承 Object

2、保证所有对象具有某些功能

Object 的方法会被子类所继承,例如: clone()、equals(Object obj)、toString() 等方法。

3、垃圾回收变得容易

对象保证有其(Object)类型信息,因此不会因无法确定对象的类型而陷入僵局。这对于系统级操作显得十分重要(如异常处理)。

1.9 容器

持有对其他对象的引用称为容器(集合),例如List(用于存储序列),Map(也被称为关联数组,用来建立对象之间的关联),Set(每种对象类型只持有一个),以及诸如队列、树、堆栈等更多的构件。

ArrayList与LinkedList的比较,前者是数组的形状,随机访问元素开销小,但插入、删除操作开销大。后者是链表形状,插入、删除操作方便。

1.10 对象的创建和生命期

认识对象置于堆栈和堆的区别

  • 堆栈 --间分配和释放置于优先考虑的位置,牺牲了灵活性,因为必须知道对象确切的数量、生命周期和类型。
  • 堆 --内存池中动态的创建对象,运行时才知道对象的数量,生命周期和类型。动态管理所以需要大量的时间在堆中分配存储空间,但创建存储空间和释放存储空间非常方便。

Java 采用了动态内存分配的方式,使用 new 关键字创建对象,编译器可以确定对象存活的时间,并通过“垃圾回收器机制”自动销毁它。

1.11 异常处理:处理错误

异常是一种对象,从出错地点被抛出,并被特定类型的错误异常处理器捕获,通过try--catch或者throw。异常处理就像是与程序正常执行路径并行的、在错误发生时执行的另一条路径。

运行时的异常,只有当代码运行时才能发现异常,并不需要try-catch。

1.12 并发编程

同一时刻处理多个任务的思想,也就是多线程运行。

同步多线程运行有一个隐患,共享资源。A本来想使用a=Love You 但在某个线程导致a = hate you 然后A使用了,这样A肯定告白失败。

1.14 总结

第一章全是理论知识,而且很多知识点明明很容易却长篇大论导致难以理解,干货有却夹杂太多虚的了。

Java编程思想总结笔记Chapter 2

转载注明:http://www.cnblogs.com/wujiancheng/

Java编程思想总结笔记The first chapter的更多相关文章

  1. Java编程思想总结笔记Chapter 2

    本章介绍Java程序的基本组成部分,体会到Java中几乎一切都是对象. 第二章   一切都是对象 目录: 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.3 永远不需要销毁对象 2.4 创建 ...

  2. Java编程思想总结笔记Chapter 5

    初始化和清理是涉及安全的两个问题.本章简单的介绍“垃圾回收器”及初始化知识. 第五章  初始化与清理 目录:5.1 用构造器确保初始化5.2 方法重载5.3 默认构造器5.4 this关键字5.5 清 ...

  3. Java编程思想总结笔记Chapter 3

    本章需要总结的不多,但细节的东西需要注意,有些很容易遗忘. 第三章 目录: 3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.5 算数操作符 3.6 自动递增和递 ...

  4. Java编程思想重点笔记(Java开发必看)

    Java编程思想重点笔记(Java开发必看)   Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...

  5. JAVA编程思想读书笔记(五)--多线程

    接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/detail ...

  6. JAVA编程思想读书笔记(四)--对象的克隆

    接上篇JAVA编程思想读书笔记(三)--RTTI No1: 类的克隆 public class MyObject implements Cloneable { int i; public MyObje ...

  7. JAVA编程思想读书笔记(三)--RTTI

    接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...

  8. JAVA编程思想读书笔记(二)--容器

    接上篇JAVA编程思想读书笔记(一) 第八章.对象的容纳 No1: java提供了四种类型的集合类:Vector(矢量).BitSet(位集).Stack(堆栈).Hashtable(散列表) No2 ...

  9. Java编程思想读书笔记之内部类

    现在是够懒得了,放假的时候就想把这篇笔记写出来,一直拖到现在,最近在读<Java编程思想>,我想会做不止这一篇笔记,因为之前面试的时候总会问道一些内部类的问题,那这本书的笔记就从内部类开始 ...

随机推荐

  1. iOS安全攻防之使用 Frida 绕过越狱设备检测

    Frida 是 一款有趣的手机应用安全分析工具. 文章参考:Bypass Jailbreak Detection with Frida in iOS applications 在 Mac Termin ...

  2. 在.Net下使用redis基于StackExchange.Redis

    研究了下redis在.net下的使用,因为以前在java上用redis用的是jedis操作,在.net不是很熟悉,在网站上也看了一部分的.net下redis的使用,大部分都是ServiceStack. ...

  3. OpenGL判断一个点是否可见

    关于OpenGL中判断一个点是否可见,可以分成两种情况讨论:点在2D空间中和3D空间中的时候.并且"在2D空间中"可以看作"在3D空间中"的特殊情况. 温馨提示 ...

  4. 用WebStorm创建Express项目时出现:express version is unavailable

    那是因为在npm的配置文件中使用了代理: 方式一:查看配置:npm config list如果有:registry = "https://registry.npm.taobao.org/&q ...

  5. JavaScript设计模式_01_单例模式

    最近项目不太忙,难得有时间看看书,平时挺喜欢js这门语言.也看过很多高级教程,觉得自己还是比较热衷于js的设计模式.这一次重温一下<JavaScript设计模式与开发实践>,开篇为单例模式 ...

  6. 深入理解循环队列----循环数组实现ArrayDeque

    我们知道队列这种数据结构的物理实现方式主要还是两种,一种是链队列(自定义节点类),另一种则是使用数组实现,两者各有优势.此处我们将要介绍的循环队列其实是队列的一种具体实现,由于一般的数组实现的队列结构 ...

  7. Linux下如果忘记了Mysql的root密码该怎么办?

    下面十分简单的办法用来重置密码: 1.编辑MySQL配置文件my.cnf vi /etc/my.cnf #编辑文件,找到[mysqld],在下面添加一行skip-grant-tables [mysql ...

  8. 【Python3之面向对象的程序设计】

    一.面向对象的程序设计的由来 1.第一阶段:面向机器,1940年以前 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数据. 简单来说,就是直接编写 0 和 1 ...

  9. 利用php做出简单的发布信息和回复功能

    题目要求 1.建一个pinglun的数据库,自己建表2.完成一个简单的发布信息回复功能3.布局可以随便,主要是功能要实现4.注意回复是可以回复每一条的评论5.评论回复功能类似于qq空间的发布信息和回复 ...

  10. JQuery源码阅读记录

    新建html文件,在浏览器中打开文件,在控制台输入consoole.log(window);新建html文件,引入JQuery后在浏览器中打开,在控制台同样输入consoole.log(window) ...