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

第一章  对象导论

看到对象导论觉得这本书

目录:

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. Linux常用命令-jdk和Tomcat

    一.JDK的安装和配置 1.下载jdk文件 去官方网站下载Linux 64位  jdk-8u131-linux-x64.tar.gz 2.使用Ftp工具上传到/usr/local 下. 使用命令:ta ...

  2. 玩转Storage Table 的PartitionKey,RowKey设计

    参阅的文章 l  https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/designing-a-scalable ...

  3. Linux常用命令说明(记录自己Linux命令使用情况,后续会持续更新)

    首次记录时间--20170602 感觉自己Linux命令使用掌握的情况非常差,今天先记录当前会的几个. 1#cd(change directory) 切换工作目录(或者叫修改当前目录) eg. cd ...

  4. (计蒜客)UCloud 的安全秘钥

    UCloud 的安全秘钥 题意 给出一个数组 s 串,和数组 t 串,那么如果两者长度相同且两者所含的数字全部相同,则说这两个串相似. 给定原始串 S ,以及 m 个询问 T 串,问 S 串有多少个连 ...

  5. springMVC+Mybatis(使用AbstractRoutingDataSource实现多数据源切换时)事务管理未生效的解决办法

    业务场景: A.B两个单位,系统部署同一套代码: A.B两系统能相互访问: 要求将数据从A系统同步到B系统,再将反馈信息回发给A: 实际开发情况: 因为系统比较小,最开始设计架构的时候没有考虑到消息互 ...

  6. mysql之 MySQL 主从复制概述

    1 .主从复制简介MySQL 主从复制就是将一个 MySQL 实例(Master)中的数据实时复制到另一个 MySQL 实例(slave)中,而且这个复制是一个异步复制的过程.实现整个复制操作主要由三 ...

  7. (转)C++——std::string类的引用计数

    1.概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里 ...

  8. 利用Excel做一些简单的数据分析

    先来几个原始数据的截图,如下所示: 示例图就举一个吧,因为这些数据量还挺大的,大概的总结了一下,这下列这几栏中不合规范的数据占比很大: (1)民族(经分析,在此表中所涉及到的民族分别为:汉族,满族,蒙 ...

  9. Java下一个简单的数据库分库帮助类

    简介    前面两篇文章主要讲了数据库读写分离和分表分库的一些问题,这篇文章主要讲一下我个人实现的一个分表分库项目.     在此之前,我有写过一个.Net的分库,最近在做Java的项目,就顺便做出一 ...

  10. JavaScript数组基础及实例

    js数组 和var i=1;这样的简单存储一样是js中的一种数据结构,是专门用来存储多个数据的一种数据结构. 摘:数组是一组数据的集合,其表现形式就是内存中的一段连续的内存地址,数组名称其实就是连续内 ...