清单1. 抽象机制,面向对象程序设计方式

    java所基于Smalltalk的特性表现一种纯粹的面向对象设计方式:

       万物都是对象

       程序是对象的集合(容器),他们通过发送消息(发送请求)来告知彼此所要做的。

       每个对象有自己有其他对象所构成的储存(java中的所有基类是Object)

       每个对象都拥有类型type

       某一个特定类型所欲哦对象都可以接收同样的消息。

清单2.对象提供服务,被隐藏的具体实现

    

  Light  

on()

off()

    对象Light

  —> 接口

   

Light light = new Light();
light.on();

        这里,Light对象就像服务者提供了服务(接口):on(),off()

      服务中,只给客户端程序员接口,因为里面还有类创建者的隐藏代码:

         1> 类创建者任意调试修改隐藏代码,对该类服务无影响。(安全性)

         2> 隐藏代码通常是对象内部脆弱部分,隐藏后减少程序的bug。

清单3.复用--组合,聚合(has-a)

             

    现有类  —>  (合成新类时)组合      —>  (组合动态发生)聚合

                |组合存在着 “拥有关系”

清单4.继承,多态,范型,容器,参数化

    

    继承:基类表示系统中某些对象的核心概念,而导出类是具体实现。bruce说过:对于使用面向对象设计的人们来说,困难之处是从开始到结束过于简单。(满怀信心)

    继承例子不说了,下面讨论下

    多态:

package sedion.li.test;

public class Shape {
public void show(){
System.out.println("shape");
}
public static void doSomthing(Shape shape){
shape.show();
}
public static void main(String[] args) {
Circle circle = new Circle();
doSomthing(circle);
}
}
class Circle extends Shape{
public void show() {
System.out.println("circle");
}
}

    

    Def:向上转型

      通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口。

    doSomething 可以发给Shape的任何消息,Circle都可以接收到。所以这里会打印出     circle

    容器:只是辅助工具类对象的集合。

    范型(参数化): 

      “一对尖括号,中间包含类型信息”

  

ArrayList<Shape> shapes = new ArrayList<Shape>();

    

清单5:对象创建及生命周期

    java中,

      在被称为堆的内存池中创建对象(new)。java完全采用了动态内存分配方式。

    生命周期,不得不提到java的“垃圾回收器”机制:

      自动发现对象不再被使用,并继销毁。(提供了更高层的保障,避免内存泄漏)。

    

浅谈《think in java》:一 对象导论总结的更多相关文章

  1. 新手码农浅谈观察者模式(java语言简单实现)

    一:什么是观察者模式: 官方定义:定义对象间一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 举个例子,很多人都会订阅天气预报,当气象台获得明天的天气情况( ...

  2. [OpenSource]浅谈.Net和Java互相调用的三种方式

    在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份额,不管谁对谁错,Java和.Net是目前应用开发的两个 ...

  3. 浅谈.Net和Java互相调用的三种方式

    在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份 额,不管谁对谁错,Java和.Net是目前应用开发的两 ...

  4. 源码浅谈(一):java中的 toString()方法

    前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据. 最近项目中需要对一个ArrayList<ArrayList<Integer>> ...

  5. Java学习笔记——浅谈数据结构与Java集合框架(第二篇、Queue、Set)

    江南好,何处异京华. 香散翠帘多在水,绿残红叶胜于花.无事避风沙. --<纳兰词> 诗词再好,大图不能忘 上大图: 先说说栈和队列: 栈就好比手枪的弹匣,你往里面压入子弹,最先压入的子弹就 ...

  6. Java学习笔记——浅谈数据结构与Java集合框架(第三篇、Map)

    桃李春风一杯酒,江湖夜雨十年灯 --寄黄几复 之前图上写错了,是Hashtable类.t是小写的,它是个很古老的类,以至于命名都没有那么规范.. HashMap HashMap就是存储key-valu ...

  7. 浅谈单例模式及其java实现

    单例模式是23种设计模式中比较简单的一种,在此聊一下单例模式. 1.什么是设计模式? 对于没有接触过设计模式的人来说,一听到设计模式这四个字就觉得这个东西很高深莫测,一下子就对这个东西产生了恐惧感,其 ...

  8. 通过一道笔试题浅谈javascript中的promise对象

    因为前几天做了一个promise对象捕获错误的面试题目,所以这几天又重温了一下promise对象.现在借这道题来分享下一些很基础的知识点. 下面是一个面试题目,三个promise对象捕获错误的例子,返 ...

  9. Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)

    横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...

  10. 浅谈如何用Java操作MongoDB

    NoSQL数据库因其可扩展性使其变得越来越流行,利用NoSQL数据库可以给你带来更多的好处,MongoDB是一个用C++编写的可度可扩展性的开源NoSQL数据库.本文主要讲述如何使用Java操作Mon ...

随机推荐

  1. 2019.03.26 bzoj4448: [Scoi2015]情报传递(归并排序+树链剖分)

    传送门 题意简述: 给一棵nnn个点的树,树上每个点表示一个情报员,一共有mmm天,每天会派发以下两种任务中的一个任务: 1.搜集情报:指派T号情报员搜集情报 2.传递情报:将一条情报从X号情报员传递 ...

  2. 信号量(Semaphore)

    在python的多线程体系中,一共有4种锁: 同步锁(互斥锁):Lock: 递归锁:RLock: 信号量:Semaphore: 同步条件锁:Condition. 信号量(semaphore)是一种可以 ...

  3. 线程中的setDaemon方法

    setDaemon方法必须在start方法前定义.t1.setDaemon(True),该语句的意思是:将主线程A设置为子线程t1的守护线程.也就是在执行程序时,t1会随着主线程A的退出而退出,不论t ...

  4. Exp3 免杀原理与实践_05齐帅

    Exp3 免杀原理与实践 20154305_齐帅 想要弄懂免杀,一定得先把基础问题弄明白啊~~ 一.基础问题回答 (1)杀软是如何检测出恶意代码的? - -检测特征码: 依靠分析总结出计算机病毒中常出 ...

  5. 注入Shellcode并运行攻击

    注入Shellcode并运行攻击 一.实验步骤 1.安装execstack并修改设置 安装execstack apt-get install execstack 设置堆栈可执行 execstack - ...

  6. Excel VBA(宏):添加宏

    写在前面: .编写宏,打开VBA,双击ThisWorkbook对当前工作薄进行编写宏:双击Sheet1,对整个sheet编写宏: 或者创建模块,在模块里,编写.调试代码. 打开VBA的方法见第一讲,结 ...

  7. 2019/3/7 Java学习之多线程(基础)

    Java学习之多线程 讲到线程,就必须要懂得进程,进程是相当于一个程序的开始到结束,而线程是依赖于进程的,没有进程,就没有线程.线程也分主线程和子线程,当在主线程开启子线程时,主线程结束,而子线程还可 ...

  8. Python核心团队计划2020年停止支持Python2,NumPy宣布停止支持计划表

    Python核心团队计划在2020年停止支持Python 2.NumPy项目自2010年以来一直支持Python 2和Python 3,并且发现支持Python 2对我们有限的资源增加了负担:因此,我 ...

  9. IDEA打开maven项目dependencies红线

    第一步:install报红的项目,从maven库下载需要的包,看看日志还缺哪些本地包,少了就去下,丢到库里.不缺包后,reimport一下一般就OK了,如果还是红的,重启一下就好了. 如果第一步还没好 ...

  10. Redis-03.事务

    Redis事务: 在一个队列(queue)中依次执行一系列的命令. 事务的三个阶段: 1.开始事务(MULTI) 2.命令加入队列 (QUEUE) 3.执行事务 (EXEC) 示例1: MULTI & ...