Java For Android - 面向对象


 

上图,就是一个对象。它有状态 和行为 。

在面向对象程序设计领域,一个对象就是变量和相关方法的软件组合。

软件对象在一个或多个变量中维护它的状态,软件对象用方法来实现它的行为。

软件对象所知道的(状态)和可以做的(行为)都由这个对象中的变量和方法来表现。

程序,无非是对数据的处理。对象的实例方法影响或改变对象的实例状态。

对象的变量组成了对象的核心。方法环绕在对象核心的周围并将对象核心对于程序中的其他对象隐藏起来。将对象的变量至于它的方法的保护之下,这被称为封装 (encapsulation)。

对象有时可能希望显露它的一些变量和隐藏它的一些方法。在Java中,对象可以为它的每个变量和方法指定四个访问级别之一。访问级别决定哪些其他对象和类的方法可以访问此变量或方法。

将变量和方法封装 进一个简单的软件组合中是一种简单而强大的思想,它给软件开发人员提供了两个主要的好处:

1. 模块化 :一个对象的源代码可以独立于其他对象的源代码进行编写和维护。另外,对象可以很容易地在系统中传递。你可以将你的自行车交给其他人使用,而它仍然会正常工作。

2. 隐藏信息 :对象有一个公用的接口,其它对象可以使用这个接口和它通信。对象可以维护私有的信息和方法,可以在任何时候改变这些信息和方法,而不影响依赖于它的其他对象和方法。

软件对象的相互交互和通信是通过相互发送消息(message)进行的。当对象A希望对象B执行B的一个方法时,对象A发送一个消息给对象B。

有时,接收消息的对象需要了解更多的信息,以便明确应该做什么事;此信息作为参数(parameter)随消息一起传递。

消息 有三个组成成分:

1. 消息被发送到的对象

2. 要执行的方法的名称

3. 希望由此方法传递的任何参数

消息提供两个重要的好处:

1. 对象的行为通过它的方法显露出来,所以(除非直接访问变量)消息传递支持对象之间所有可能的交互。

2. 对象不需要在相互的进程内,甚至不需要在相同的机器上,也能够相互来回发送和接收消息。

类是对象的蓝图或原型,它定义了所有某种类的对象的共有的变量和方法。

当创建一个对象的实例时,系统为此对象及它的所有实例变量分配足够的内存。每个实例得到类中定义的所有实例变量的拷贝。

除了实例变量,类还可以定义类变量(class variable)。类变量 包含由此类的所有实例共享的信息。

类还可以声明类方法 (class method),可以直接从类调用此类方法,而实例方法必须在一个特定实例上调用。

对象提供了模块化和隐藏信息两种好处,而类提供了可重用性。

每个扩展类从基类中继承(inherit)状态(以变量声明的形式)和方法。子类还可以覆盖(override)继承的方法并为这些方法提供特殊化的实现。

继承带来的好处:

1. 扩展类在基类提供的共有元素的基础上提供特殊化的行为。通过使用继承,程序员可以多次重用超类中的代码。

2. 程序员可以实现“抽象类(abstract class)”的基类,它定义了“通用的”行为。抽象类定了并可能部分实现了这些行为,但是类的一部分未被定义并且未被实现。程序员可以在特殊化的扩展类中填充细节。

接口 是无关对象用来进行彼此交互的设备。一个对象可以实现多个接口。

遥控器是你与电视机之间的接口,英语是两个人之间的接口。

接口可以与协议(关于行为的规定)进行类比,当类实现了接口时,类药实现接口中定义的所有方法。

使用接口定义了一个行为协议,类层次结构中任何地方的任何类都可以实现这个行为协议。

接口对一下情况有用:

1. 获得无关类之间类似之处,而不必勉强地实施类关系

2. 声明一个或多个类可能要实现的方法

3. 显露对象的变成接口,而不必显露它的类

相关内容