技术开发 频道

Windows开发人员的Java Web支持基础

  Java 一种面向对象的编程语言。Visual Basic 有很多对象特性,但是它却不是一种严格的面向对象的语言。在本节,我们将向您介绍如何在 Visual Basic 中构建一个类,然后再介绍如何在 Java 语言中构建一个等价的类。

  类的使用

  您可以认为 类就是您要定义的一种数据类型。一个类的变量实例称为 对象。与其他变量不同,对象具有类型、一组属性以及一组操作。对象的类型可以使用该对象实例化时所使用的类表示。对象的属性表示该对象的值或状态。对象的操作是您为了改变对象状态而调用的所有函数集。

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

  定义 Visual Basic 类

  现在,让我们假设这样一种情况:您希望开发一个自己的类型——它可以表示一个复杂的对象,而在 Visual Basic 语言的基本类型并不支持这种类型。假设您是一名金融系统软件开发小组的成员,而您的任务是开发一些代码来表示一个典型的银行帐号。虽然一个银行有很多种帐号,但是每个帐号都有一些相同的基本属性和操作。具体来说,每个帐号都有一个余额和一个 ID 号。清单 10 中给出的 Visual Basic 代码就定义了一个 account 类。该类中定义三个操作: 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 类并不相同。这两种语言各自的 account 类间的主要区别如下:

  在 Java 代码中,您并不需要使用一个单独的方法初始化一个 Account 类的实例。您使用的是 构造函数(constructor)。顾名思义,您可以使用构造函数来构造一个类的实例。构造函数名必须与定义它的类名相同,而且构造函数可以接收参数。您可以对一个类创建多个构造函数。如果您没有提供构造函数,那么程序可以自动使用一个没有参数的默认构造函数。您可以使用下面的方法来使用清单 11 中构造函数:

1 Account myAccount = new Account(12345, 0.00);
2

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

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

  对一个类成员的默认访问修饰符不是 public ,这与 Visual Basic 不同(后文会进一步介绍访问修饰符)。

  对象的优点

  在诸如 Java 之类的面向对象语言中使用类和对象有三个主要的优点: 封装(encapsulation)、 继承(inheritance)和 多态(polymorphism)。

  封装(或信息隐藏)是指将一个对象看作一个“黑盒”;也就是说,您可以不用知道(或关心)一个对象是如何实现的就可以使用这个对象。通过类中定义的方法(操作)所定义的接口来访问对象可以修改类的实现,而不会破会使用该类对象的任何代码。

  多态是对相同的名字关联不同特性、而且可以根据上下文选择正确特性的能力。多态最常见的例子是方法的重载,此时您可以定义名字相同的多个方法,前提是这些方法使用不同的参数。

  继承 是指通过编写对现有的类进行扩展的新类而对代码进行重用。例如,让我们假设您希望编写一个新类来代表一个支票帐号。由于支票帐号是一种特殊的银行帐号,因此您可以编写一个 CheckingAccount 类(称为子类)对 Account 类进行扩展。这样 CheckingAccount 类就可以自动获得 Account 类中的所有状态和所有操作(函数)。您只需要向 CheckingAccount 类中添加一些特殊的新状态和操作即可。例如,您可以添加一个 cashCheck() 函数来执行为支票帐号存入现金的操作。如果需要,您还可以修改子类继承的状态或行为。例如,一个用户可能会被允许从她的支票帐号中提款,因此您就可能需要重载原来的 withdrawal 函数。

0
相关文章