浅谈《think in java》:一 对象导论总结
清单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》:一 对象导论总结的更多相关文章
- 新手码农浅谈观察者模式(java语言简单实现)
一:什么是观察者模式: 官方定义:定义对象间一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 举个例子,很多人都会订阅天气预报,当气象台获得明天的天气情况( ...
- [OpenSource]浅谈.Net和Java互相调用的三种方式
在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份额,不管谁对谁错,Java和.Net是目前应用开发的两个 ...
- 浅谈.Net和Java互相调用的三种方式
在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份 额,不管谁对谁错,Java和.Net是目前应用开发的两 ...
- 源码浅谈(一):java中的 toString()方法
前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据. 最近项目中需要对一个ArrayList<ArrayList<Integer>> ...
- Java学习笔记——浅谈数据结构与Java集合框架(第二篇、Queue、Set)
江南好,何处异京华. 香散翠帘多在水,绿残红叶胜于花.无事避风沙. --<纳兰词> 诗词再好,大图不能忘 上大图: 先说说栈和队列: 栈就好比手枪的弹匣,你往里面压入子弹,最先压入的子弹就 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第三篇、Map)
桃李春风一杯酒,江湖夜雨十年灯 --寄黄几复 之前图上写错了,是Hashtable类.t是小写的,它是个很古老的类,以至于命名都没有那么规范.. HashMap HashMap就是存储key-valu ...
- 浅谈单例模式及其java实现
单例模式是23种设计模式中比较简单的一种,在此聊一下单例模式. 1.什么是设计模式? 对于没有接触过设计模式的人来说,一听到设计模式这四个字就觉得这个东西很高深莫测,一下子就对这个东西产生了恐惧感,其 ...
- 通过一道笔试题浅谈javascript中的promise对象
因为前几天做了一个promise对象捕获错误的面试题目,所以这几天又重温了一下promise对象.现在借这道题来分享下一些很基础的知识点. 下面是一个面试题目,三个promise对象捕获错误的例子,返 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)
横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...
- 浅谈如何用Java操作MongoDB
NoSQL数据库因其可扩展性使其变得越来越流行,利用NoSQL数据库可以给你带来更多的好处,MongoDB是一个用C++编写的可度可扩展性的开源NoSQL数据库.本文主要讲述如何使用Java操作Mon ...
随机推荐
- js常用通用方法
验证身份证详细方法 function isCardNo(pId) { var arrVerifyCode = [1, 0, "x", 9, 8, 7, 6, 5, 4, 3, 2] ...
- mac 清理
1.iOS DeviceSupport -- ~/Library/Developer/Xcode/iOS DeviceSupport 这个可重新生成!在连接旧设备调试时,会重新自动生成. 2.iP ...
- Exception in thread "main" java.lang.UnsupportedClassVersionError : unsupported major.minor version 52.0
新建好springboot项目后,打开application运行main方法报如下错. 1.问题:Exception in thread "main" java.lang.Unsu ...
- 时间字符串格式化 js
/*格式化*/ function dateFormat(dateString, format) { if (!dateString) return ""; //var time = ...
- EBS API及接口清单
https://www.cnblogs.com/lizicheng/p/9521742.html 模块 应用场景 类型 API/接口 AP 付款核销 API ap_pay_invoice_pkg.ap ...
- Linux下Oracle数据库的安装
记录详细过程以备使用 一.准备安装 为了确保Oracle数据库11g能够成功安装,您需要做好准备工作,例如检查网络配置.更改Linux内核参数.创建用户Oracle.创建安装目录.设置用户Oracle ...
- redis主从架构,分片集群详解
写在前面:这篇笔记有点长,如果你认真看完,收获会不少,如果你只是忘记了相关命令,请翻到末尾. redis的简单介绍: 一个提供多种数据类类型储存,整个系统都在内存中运行的, 定期通过异步的方式把数据刷 ...
- spark-submit(spark版本2.4.2)
spark-submit官方文档 :http://spark.apache.org/docs/latest/submitting-applications.html Launching Applica ...
- Python编程练习:使用 turtle 库完成六边形的绘制
绘制效果: 源代码: # 六边形 import turtle turtle.setup(650, 350, 200, 200) turtle.penup() turtle.pendown() turt ...
- Javascript高级编程学习笔记(31)—— BOM(5)screen、history对象
screen对象 screen对象应该是BOM对象中最不常用的对象了 其主要用于提供客户端的显示能力信息 包括浏览器外部显示的信息,和像素的宽高等 这个对象的主要用于检测客户端能力,一般不会影响功能 ...