Java编程思想--01对象导论

1.1 抽象

面向对象提供了更好的问题空间表述工具,元素可以用对象标识。

面向对象的特征:

  1. 万物皆为对象
  2. 程序是对象的集合,他们彼此通过发送消息来彼此通信。(阅读程序时的一个很好的角度)
  3. 每个对象都有其类型
  4. 某一特定类型的所有对象都可以接收到同样的消息。(继承、多态)

对象拥有状态、行为和标识。

1.2 对象接口

操纵对象的方法。

1.3 每个对象都提供服务

开发、设计或理解程序时,可以将对象看作服务提供者,目标是创建能够解决问题的一系列对象。这样可以提高对象的内聚性

1.4 被隐藏的实现

隐藏类内隐私、关键或者脆弱的部分,防止被修改以至于出现bug。
主要有四种类型

  1. private:仅当前类的创建者和内部方法才能访问。
  2. protected:将访问范文扩大到了继承类。
  3. public:公开访问。
  4. 默认:不加访问修饰符,仅在同一个包内可见。

1.5 复用的体现

复用的直接方式使使用该类的一个对象,也可以将类的对象置于新的类中(“组合”)。

1.6 继承

将具有相似功能的类进行归纳总结。例如:形状(三角形、正方形、原型)、垃圾(玻璃、塑料、腐烂物)。

继承的一些问题

  1. 当继承现有类时,便创建了新的类型,这个戏类型包含所有类型成员,包括private成员但不可访问(这一点对于向上转型很重要,通过向上转型,基类方法能够访问相应的private变量)。
  2. 基类与导出类有相同的接口
  3. 导出类的新差异:可以增添新的方法、或者覆盖原有方法。

1.6.1 “是一个”与“像一个”

“是一个”:将继承类当作基类,继承类只覆盖了原有方法,这种情况可以视为纯粹的替代。例如圆是一个形状。
“像一个”:继承类里添加了新的接口元素,但是旧有类型无法访问新的接口。例如热力泵像一个空调。

1.7 伴随多态的可互换对象:

问题:在处理类的层次结构时,经常想把一个对象作基类来看待(如计算形状的面积)。但是者在编译时会产生一个问题,即编译时无法得知具体该执行哪段代码。


解决办法:“后期绑定”。即在编译时仅检查调用参数和返回值的类型(强类型语言),在运行时根据对象内的信息计算方法的具体地址。


好处:对于强类型语言来说,不用程序员在写代码时,逐个判断对象的类型(如计算各类形状面积)。

1.8 单根继承结构

在Java中所有对象都有一个共有的接口,他们都属于一个相同的基类Object

好处:

  1. 单根继承结构保证所有对象都具备某些功能,可以在系统上执行基础操作而不用去写额外的代码来判断类型。
  2. 单根继承结构使得垃圾回收机制变得简单。

1.9 容器

解决的问题:容器可以在任何需要的时候都可以拓充自己以容纳更多的东西。
产生的问题:Java SE5之前,所有的容器都是基于Object。这就会出现一个问题,当对象存储到容器中时,会向上转型。但是当取回对象时,需要进行向上转型,该如何正确的转型呢?

解决的办法:参数化类型(泛型)。如果进行向下转型和运行时检查(以某种方式记住对象的类型)会消耗额外的时间。Java SE5增加了参数化类型,即编译器直接定义一个只接收相应类型的容器,例如:

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

1.10 对象创建的生命周期

  • Java完全采用了动态内存的分配方式 ,即在堆内存中创建对象。
  • Java垃圾回收器"知道"对象何时不再被使用,并自动释放对象多占用的内存。
  • 这一点同所有对象都是继承自Object类,以及只能以一种方式创建对象(在堆上创建)这两个特性结合起来。

1.11 异常处理

Java内置了异常处理并且强制使用

1.12 并发编程

把问题分成多个可以独立运行的部分(任务)从而提高系统的响应能力,在程序中。这些独立运行的部分被称之为线程。隐患:资源共享。

1.13 Java与Internet

Java解决了在万维网上的程序设计问题:事务处理、客户端编程、服务器性能。

1.13.1 Web是什么–C/S计算机技术

系统有一个信息存储池,用来存储数据,可以根据需要将它分发给某些人或机器群。信息存储池、分发信息的软件、信息以及软件所驻留的机器/机器群统称为服务器。驻留在用户机器上的软件,负责与服务器进行通信,然后将它们显示在客户机上。

(1)Web浏览器

浏览器只是一个查看器,它甚至不能执行简单的计算任务。

(2)“客户端编程”

  • 插件:可以下载一段代码,将其插在服务器适当的位置上,以此为浏览器增添新的功能。
  • 脚本语言:插件引发了脚本语言,通过某种脚本的开发,可以将客户端程序的源代码直接插入到HTML页面中,解释这种语言的插件在HTML页面被显示前自动激活。
  • Java:解决剩余20%的问题。Java可以通过applet以及使用Java Web Start来进行客户端编程。applet:自动下载、网络分发、需要Java解释器、解决表单检查、降低负载。
  • .Net与C#:Java的竞争对手
  • Internet与Intranet(企业内部网)

(3)服务器端编程

  • 可以将生成的HTML页面发回给客户端,也可以发回主要数据,在客户端进行格式编排。
  • 与数据库的交互。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值