技术开发 频道

ASP 开发人员的 J2EE 基础

  面向对象编程简介

  Java 编程语言是面向对象的语言。Visual Basic 具有许多对象特性,但不是严格的面向对象语言。本节将讨论如何用 Visual Basic 构建一个类,然后讨论如何用 Java 语言构建等价的类。

  使用类

  您可以将 类视为您定义的数据类型。类的变量实例称为 对象。与其他变量类似,对象具有一个类型、一组属性和一组操作。对象的类型由从中实例化对象的类表示的。对象的属性表示其值或状态。对象的操作是可能的函数集,您可以在对象中调用这些函数来更改其状态。

  请考虑 Visual Basic 的 Integer 基本数据类型,它表示一个整数。您可以使用该类型名称创建整数实例的变量。每个 Integer 变量都有一个属性,表示变量存放的整数。每个 Integer 变量还有相同的操作集,您可以使用该操作集来更改变量的状态(或值)。对 Integer 变量执行的一些操作包括加 (+)、减 (-)、乘 (*)、除 (\) 和取模 (Mod)。

  定义 Visual Basic 类

  现在,我们来研究您可能要开发自己类型的情形――自己开发的类型是一个 Visual Basic 语言不支持作为基本类型的复杂对象。假定您是为财务机构开发软件的小组成员,您的工作是开发表示一般银行帐户的代码。一个银行有很多帐户,但每个帐户都有相同的基本属性和操作的集合。特别是,帐户包含一个余额和一个 ID 号。清单 10 中的 Visual Basic 代码定义了帐户类。它定义了三种操作: Deposit 、 Withdrawal 和 InitAccount (用于初始化余额和帐号)。注意如何通过使用私有变量和您定义的称为 Balance 的属性允许该类的用户获得余额。

  清单 10. 定义 Visual Basic 类

1 Private theBalance As Currency
2
3   Private theAccountNumber As Integer
4
5   Public Sub InitAccount (number As Integer, initBal As Currency)
6
7   theAccountNumber = number
8
9   theBalance = initBal
10
11   End Sub
12
13   Public Sub Deposit (amount As Currency)
14
15   theBalance = theBalance + amount
16
17   End Sub
18
19   Public Sub Withdrawal (amount As Currency)
20
21   theBalance = theBalance - amount
22
23   End Sub
24
25   Public Property Get Balance() As Currency
26
27   Balance = theBalance
28
29   End Property
30
31   Public Property Get AccountNumber() As Integer
32
33   AccountNumber = theAccountNumber
34
35   End Property
36
37

  定义 Java 类

  清单 11 用 Java 语言实现 Account 类。

  清单 11. Java 语言 Account 类

1 public class Account {
2
3   private double balance;
4
5   private int number;
6
7   public Account(int number, double balance) {
8
9   number = argNumber;
10
11   balance = argBalance;
12
13   }
14
15   public void deposit(double amnt) {
16
17   balance += amnt;
18
19   }
20
21   public void withdrawal (double amnt) {
22
23   balance -= amnt;
24
25   }
26
27   public double getBalance() {
28
29   return balance;
30
31   }
32
33   public int getNumber() {
34
35   return number;
36
37   }
38
39   }
40
41

  如果您所见,定义 Java 类与定义 Visual Basic 类不同。这两种语言各自的帐户类反映了以下主要区别:

  在 Java 代码中,您不需要单独的方法来初始化 Account 的实例。使用 构造函数即可。如其名称的含义,您使用它来构建类的实例。构造函数必须与定义它的类具有相同的名称,而且它可以带参数。您可以为一个类创建多个构造函数,如果您没有提供构造函数,则您会自动使用不带参数的默认构造函数。您可以像清单 11 那样使用构造函数:

  Account myAccount = new Account(12345, 0.00);

  与 Visual Basic 不同,Java 语言对属性没有特殊规定。按照约定,Java 属性是私有域,您通常提供一组称为访问器(accessor)的方法来访问包含属性的域。返回属性值的方法称为 getter,设置属性值的方法称为 setter。下面是 setter 方法的例子:

  public void setIntProperty(int argIntProperty) {intProperty = argIntProperty;}

  在 Visual Basic 中,类成员的默认访问修饰符不是 public (稍后介绍访问修饰符的更多信息)。

  使用对象的带来的好处

  在诸如 Java 语言之类的面向对象语言中使用类和对象会带来三个主要好处: 封装、 继承和 多态 :

  封装(或信息隐藏)是指将对象视作一个“黑盒”;即使用对象时,无须了解(或关心)对象是如何实现的。通过类中定义的方法(运算符)所定义的接口使用对象,可以确保更改类实现而不破坏使用该类对象的任何代码。

  多态是指将不同特性与相同名称关联的能力,以及根据上下文选择正确特性的能力。最常见多态例子是方法重载,您可以定义使用名称相同的几种方法,只要这些方法所带的参数不同即可。

  继承 是指通过编写扩展现有类的新类来重用代码。例如,假设您希望编写新类来表示支票帐户。因为支票帐户是一个特殊种类的银行帐户,所以可以编写一个扩展 Account 类(或作为 Account 类的子类)的 CheckingAccount 类。然后, CheckingAccount 类自动获得 Account 类的状态和所有运算符(函数)。您只需要添加特定于 CheckingAccount 类的新状态和运算符即可。例如,您可以添加一个 cashCheck() 函数执行兑现支票帐户写的支票的操作。如有必要,还可以更改子类的状态和行为。例如,可能允许用户透支其支票帐户,因此您需要重载透支函数。

0
相关文章