面向对象(一)"/>
JAVA基础之面向对象(一)
一、面向对象
“一树一菩提,一花一世界。”一切皆对象,万事有三问,我是谁?我从哪里来?我倒那里去?
1. OOP思想(Object Oriented Programming 面向对象的程序设计)
概念
OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:
- 组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
- 抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
- 封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
- 多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果依据实际调用的类型。
- 继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。
特征
- 封装性
- 多态性
- 继承性
- 抽象性
重点
抽象是面向对象思想最基础的能力之一,正确而严谨的业务抽象和建模分析能力是后续的封装、继承、多态的的基础,是软件大厦的基石。
2. JAVA面向对象的设计
2.0 概述
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
2.1 语言特点
- 简单性
- 面向对象
- 分布性
- 编译和解释性
- 稳健性
- 安全性
- 可移植性
- 高性能
- 多线索性
- 动态性
2.1 java的一树一世界
java之父Gosling设计得Object类,是任何类的默认父类(好比大树的跟,每一片叶子都与他有关),是对万事万物的抽象。我们都知道哲学的三大经典问题:我是谁,从哪里来,到哪里去。在Object类中,这些问题都可以得到隐约的回答:
- 我是谁?
getClass()说明本质上是谁,二toString()是当前我的名片
- 我从哪里来?
Object()构造方法是生产对象的基本方式,clone() 是繁殖对象的另一种方式。
- 我到哪里去?
finalize()是在对象销毁时触发的方法
回答完哲学家的问题,我们再来看看我们还能做些什么?
- 世界是否因你而不同
hashCode()和equals()就是判断与其他元素是否相同的一组方法。
- 与他人如何协作
wait() 和notify()是对象间通信与协作的一组方法
2.2 JAVA的封装、继承、多态
封装
- 封装是在抽象基础上决定信息是否公开,以及共公开的等级,核心问题是以什么样的方式暴露哪些信息。
- 封装使面向对象世界变得单纯,对象之间的关系变得简单,各人自扫门前雪,耦合度变低,有利于维护。
- 隐藏对象内部信息,是外部无法访问,提升数据的安全。
迪米特法则:A模块使用B模块的某个借口行为,对B模块中除此以外的其他信息知道的尽可能少。
属性值的访问
- 使用getter/setter方法
- 不直接对public的属性进行读取和修改
- 优先推荐使用private控制级别
继承
- 继承是面向对象编程技术的基石,允许创建具有逻辑等级结构的类体系,形成一个继承树。
- 让软件在业务多变的情况下,某些基础模块可以直接被复用,间接复用或增强复用,父类的能力通过这种方式赋予子类。
- IS-A的关系
多态
-
效果
根据运行时的实际对象类型,同一个方法产生不同的运行结果,使同一个行为具有不同的表达方式。 -
多态的优点
- 消除类型之间的耦合关系- 可替换性- 可扩充性- 接口性- 灵活性- 简化性
-
多态存在的三个必要条件
- 继承 - 重写 - 父类引用指向子类对象
3. 结束
更多推荐
JAVA基础之面向对象(一)
发布评论