资讯专栏INFORMATION COLUMN

【Thinking in Java】第一章 对象导论

joyqi / 1793人阅读

摘要:基类导出类导出类继承了基类的特点,基类和导出类具有相同的基础接口,形成两者差异的做法在导出类中添加新方法在导出类型中添加新的接口元素,扩展了接口。覆盖在导出类用创建方法的新定义,覆盖基类中的方法定义纯粹替代,只覆盖。

一、抽象过程

建模基于计算机的结构

“解空间”的解

汇编语言:对底层机器的轻微抽象

“命令式”语言:汇编语言的抽象

建模基于待“解决问题

“问题空间”的元素

面向对象

二、每个对象都有一个接口

创建抽象数据类型(类)
类:相同特性(数据元素)和行为(功能)的对象
主要任务:问题空间的元素和解空间的对象之间创建一对一的映射
类型决定接口——接口确定可发请求——产生请求——获得对象——方法(代码)调用

三、每个对象都提供服务

将对象想象为服务提供者,提高对象的内聚性。每个对象做好自己的份内事。

四、控制访问

public:任何人可用
private:子类不可用超类
protected:子类可用超类

五、复用

直接使用该类的一个对象
将那个类的一个对象置于某个新的类中(创建一个成员对象)

组合:使用现有的类合成新的类 has-a 拥有关系
聚合:动态组合
组合带来灵活性,新类成员通常被声明为private。
不要第一反应就是继承,可以尝试组合。

六、继承

对象这种工具使得程序员可以用概念(类class)将数据和功能封装到一起。

基类——导出类

导出类继承了基类的特点,

基类和导出类具有相同的基础接口,形成两者差异的做法:

1、在导出类中添加新方法

 is-like-a:在导出类型中添加新的接口元素,扩展了接口。

2、覆盖(在导出类用创建方法的新定义,覆盖基类中的方法定义)

 is-a:纯粹替代,只覆盖。
七、伴随多态的可互换对象

基类中,方法操作时泛化的
非OOP的编译器采用前期绑定,对一个具体函数名字调用,解析到将要执行代码的绝对地址。
而OOP的编译器采用了后期绑定,当向对象发送消息时,代码直到程序运行时才能确定。编译器确保调动方法的存在,并对调用变元和返回值执行类型检查。

转型
向上转型:将导出类看做它的基类

八、单根继承结构

所有东西都是Object类型

九、容器

不知道解决问题时需要多少对象、多少空间怎么办?
容器,创建一种对象类型,持有对其他对象的引用,在任何需要时都可扩充自己以容纳置于其中的所有东西。
List:用于储存序列
Map:也称关联数组,用来建立对象之间的关联
Set:每种对象类型只持有一个
Queue、Tree、Stack……

不同容器
1、提供了不同类型的接口和外部行为
2、对于某些操作具有不同的效率

参数化类型
储存Object的容器可以储存任何东西。当将对象引用置入容器时,被向上转型为Object,会丢失其身份;取回时,就获取了一个对Object对象的引用。若要变回原先接口,需向下转型,但向下转型不安全。一种采用向下转型的做法是异常处理。
更好的做法是参数化类型机制。参数化类型机制是一个类,编译器可以通过自动定制,从而作用于特定类型上。

十、对象的创建和生命期

使用关键问题之一:对象生成和销毁方式
1、编写程序时设定:将对象置于堆栈(有时被称为自动变量或限域变量)或静态存储区域内来实现。牺牲了灵活性。
2、在堆(heap)的内存池中动态地创建对象。创建堆存储空间的事件依赖于存储机制的设计。

动态方式一般性逻辑假设:对象趋于变得复杂,所以查找和释放存储空间的开销不会对对象的创建造成重大冲击。动态方式带来更大的灵活性。

Java完全采用了动态内存分配方式。每当想要创建新对象时,就要使用new关键字来构建此对象的动态实例。

Java生命期:垃圾回收器

十一、异常处理:处理错误 十二、并发编程

线程:独立运行的部分(任务)
并发:把问题切分成多个线程,从而提高程序的响应能力
多线程优点:不必操心机器上是有多个处理器还是只有一个处理器
隐患:共享资源。解决方法:共享资源在使用期间被锁定。

十三、Java与Internet 1.Web

1)客户/服务器计算技术
系统具有一个中央信息存储池,可根据需要将它分发给某些人员或机器集群,其位置集中于中央,使得它可被修改,并且这些修改将被传播给信息消费者。
服务器:信息存储池、用于分发信息的软件、信息与软件所驻留的机器或机群
单一的服务器同时为多个客户服务

2)Web就是一台巨型服务器
关心:怎样连接到一台服务器上,并与之进行交互。

2、客户端编程

1)插件
2)脚本语言
3)Java
4)备选方案
Java applet
Flex
5).NET和C#
6)Internet和Intranet

十三、服务器端编程

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68495.html

相关文章

  • 《On Java 8》中文版,又名《Java 编程思想》中文第五版

    摘要:基于版本基于版本。由于中英行文差异,完全的逐字逐句翻译会很冗余啰嗦。译者在翻译中同时参考了谷歌百度有道翻译的译文以及编程思想第四版中文版的部分内容对其翻译死板,生造名词,语言精炼度差问题进行规避和改正。 来源:LingCoder/OnJava8 主译: LingCoder 参译: LortSir 校对:nickChenyx E-mail: 本书原作者为 [美] Bru...

    BingqiChen 评论0 收藏0
  • 学习Java必读的10本书籍

    摘要:学习编程的本最佳书籍这些书涵盖了各个领域,包括核心基础知识,集合框架,多线程和并发,内部和性能调优,设计模式等。擅长解释错误及错误的原因以及如何解决简而言之,这是学习中并发和多线程的最佳书籍之一。 showImg(https://segmentfault.com/img/remote/1460000018913016); 来源 | 愿码(ChainDesk.CN)内容编辑 愿码Slo...

    masturbator 评论0 收藏0
  • toString方法的陷阱

    摘要:方法简介作用返回该对象的字符串表示。建议所有子类都重写此方法。类的该方法返回一个字符串,该字符串由类名对象是该类的一个实例标记符和此对象哈希码的无符号十六进制表示组成。 toString方法简介 作用 返回该对象的字符串表示。通常,toString()方法会返回一个以文本方式表示此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 Object 类的 to...

    张汉庆 评论0 收藏0
  • Thinking in Java学习笔记——Type Information

    摘要:找到字节码并创建一个对象。链接,检验字节码,为字段分配存储空间,解决其对他类的引用。初始化,如果有父类则初始化父类,执行静态初始化器和静态初始化区块直到第一次访问静态成员时初始化才执行。如果成员不是编译时常量由初始化器赋值,也会引起初始化。 有两种形式在运行时获取类型信息: 传统的RTTI 反射 Class对象 运行时的类型信息是通过Class对象表现的,它包含了类的信息。所有...

    liangzai_cool 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<