【Java笔记整理1-2】面向对象程序设计OOP的基本概念

2016-08-13  本文已影响82人  LAVAGUE

引入

如果接触过面向过程的C语言,那么再来接触面向对象的Java的会很好理解。毕竟OOP只是在过程型语言概念的基础上,又添加了许多概念而已。既然添加了许多概念,照理说Java程序比等价的过程型程序要复杂,但是实际上编写良好的Java程序通常要比过程型程序要简单的多,而且也更易于理解。那么,这么神奇的面向对象程序设计究竟是怎么样的呢?


知识点归纳(了解)

对象导论.png

1.抽象过程

1.1所有编程语言都提供抽象机制。人们所能解决问题的复杂性直接取决于抽象的类型和质量。
1.2面向对象思想实质:程序可以通过添加新类型的对象使自身适用于某个特定问题。
1.3对象具有状态、行为和标识

每个对象都可以拥有内部数据(它们给出了该对象的状态)和方法(它们产生行为),并且每一个对象都可以唯一地与其他对象区分开来,亦即每一个可以存在于不同的机器和地址中的对象都有一个唯一的地址。

2.每个对象都有一个接口

2.1类是具有相同特性(数据元素)和行为(功能)的对象集合。类实际上是一个数据类型
2.2类是对象的抽象集合,对象是类的具体实例
2.3对象的接口定义了对象可以完成哪些任务。类决定接口。
示例.jpg

3.每个对象都提供服务

3.1把对象当做服务提供者

程序通过调用其他对象所能提供的服务来向用户提供服务。
当要解决一个问题时,我们可以想:我们需要哪些服务来解决这个问题?我们需要什么样的对象?这就将问题分解为对象集合了。

3.2提高对象的内聚性

不将过多的功能集合到一个对象中。每个对象都可以很好的完成一项任务,但不试图做更多的事情。还可以在其他地方复用。

示例.png

4.被隐藏的具体实现

4.1
程序员分类.png
4.2访问控制存在原因
4.3访问控制关键字

public、private、protected

5.复用具体实现

5.1组合——利用现成的类合成新的类,实现代码复用

6.继承

6.1继承——以现有的类为基础,通过添加或修改这个副本来创建新类
继承的类型层次结构.JPG
6.2继承后父类与子类的差异性
差异性.jpg
6.3继承的is-a关系与is-like-a关系

7.伴随多态的可互换对象

7.1将子类对象当做泛化的父类对象看待

存在的问题:如果某个父类的方法要让泛化的几何形状绘制自己,那么编译器在编译时是不可能知道应该执行哪一段代码的,那么,如何正确的调用子类对象的代码呢?

7.2通过向上转型(把子类看做父类的过程)机制实现多态
向上转型.JPG

8.单根继承结构

所有的类最终都继承自单一的基类Object。

9.容器(集合)

在任何时候都可以扩充自己以容纳置于其中的东西。
Java中具有满足不同需要的各种类型的容器,例如List(用于存储序列),Map(用来建立对象之间的关联),Set(每种对象类型只持有一个),还有队列、树、堆栈等构件

10.对象的创建和生命期

使用对象时要特别关注它们的生成和销毁方式。

11.异常处理

12.并发编程

13.Java与Internet

13.1Web是一个巨型客户/服务器系统
13.2客户端编程

13.2.1插件
13.2.2脚本语言
13.2.3Java
13.2.4C#和.NET
13.4.5Internet与Intranet

13.3服务器端编程

注意事项


Q&A

1.

Q:如何区别面向过程和面向对象
A:以“行走”为研究对象,那么
面向过程——抬腿,往前放下,抬腿,放下
面向对象——将抬腿,放下封装成一个对象,这个对象具有“走”的功能


参考资料

《Java编程思想(第四版)》第一章

上一篇下一篇

猜你喜欢

热点阅读