JAVA程序员必读:基础篇(6)

程序|程序员

JAVA程序员必读:基础篇时间:2001/09/13 13:31作者:ZSC 太平洋网络学院

 
2.4.2初始化实例和类成员

下面讲讲初始化实例和类成员:

你可以在类中定义它们的时候,使用static初始化程序和实例初始化程序来为类和实例成员提供初始化数值:

class BedAndBreakfast {

static final int MAX_CAPACITY = 10;

boolean full = false;

}

这个对于原始数据类型是没有问题的。有时候,它可以用在创建数组和对象。但是这个初始化表单有它的限制,如下:

初始化程序只可以执行用赋值语句表达的初始化 。

初始化程序不能调用任何的包含异常错误的方法。

如果初始化程序调用一个包含异常错误的方法,它不能进行错误恢复。

如果你有一些初始化要完成,可能有些不能在初始化程序实现,因为出现了上面的限制之一,这时你不得不将初始化代码随意放置了。为了初始化类成员,在static初始化块中放置初始化代码。为了初始化实例成员,就要在构造函数中放置初始化代码了。
2.4.3 Static初始化块

下面再讲讲Static初始化块

下面举一个例子,如图8所示:


(图8)

errorStrings源代码必须在static初始化块中被初始化。这是因为错误恢复必须在源代码没有被找到得时候才被执行。同时,errorStrings是一个类成员,它不能在构造函数中被初始化。在前面得例子中一,一个static初始化块是以static关键字开头得,并且JAVA代码是用大括号“{}”括起来的。

一 个类可以有许多static初始化块,它可以出现在类中任何地方。系统保证static输出化块以及static初始化程序是按它们在源代码中的顺序被调用的。

2.4.4 初始化实例成员

如果你想初始化一个实例变量而且不能在变量声明处来处理它,那么就只能在构造函数中来为这个类初始化了。假如errorStrings是一个实例变量而不是一个类变量,你就可以使用以下的代码来初始化它:

import java.util.ResourceBundle;

class Errors {

ResourceBundle errorStrings;

Errors() {

try {

errorStrings = ResourceBundle.

getBundle("ErrorStrings");

} catch (java.util.MissingResourceException e) {

// error recovery code here

}

}

}

现在代码是在构造函数中为类来初始化这个errorStrings的。

有时,类包含了许多构造函数并且每个构造函数允许调用者为新对象的不同实例变量提供初始化数值。比如,java.awt.Rectangle有以下的三个构造函数:

Rectangle();

Rectangle(int width, int height);

Rectangle(int x, int y, int width, int height);

Rectangle()构造函数没有任何的参数,所以它不能让用户大小或者原点和大小提供初始化数值;而其它的两个构造函数,它可以让用户设置初始数值。

  然而,所有的实例变量(原点和大小)都必须初始化。在这个例子中,类经常有一个构造函数来完成所有的初始化。其它的构造函数调用这个构造函数并且提供给它参数或者缺省数值。比如下面是以上所说的三个构造函数,它们初始化如下:

Rectangle() {

this(0,0,0,0);

}

Rectangle(int width, int height) {

this(0,0,width,height);

}

Rectangle(int x, int y, int width, int height) {

this.x = x;

this.y = y;

this.width = width;

this.height = height;

}

JAVA语言支持实例初始化块,你可以放心使用它。这里建议使用构造函数来初始化,主要有以下三个原因:

所有的初始化代码处在一个地方,这样使得代码更容易维护和阅读。

缺省值可以清除地知道。

构造函数广泛被JAVA程序设计人员所熟悉,包括相对新的JAVA程序设计人员,而实例初始化程序不能,而且他可能导致其它JAVA程序设计员的困惑。

2.4.5 对象和类
  你可能会注意到对象和类看起来很相似。在现实世界中,类和对象之间的区别经常是让程序员困惑的源泉。在现实世界中,很明显,类不能是它们描述的对象本身。然而,在软件中很困难来区分类和对象。有部分原因是软件对象只是现实世界中的电子模型或者是抽象概念。但是也因为对象通常有时是指类和实例。 

时间: 2024-08-24 05:24:34

JAVA程序员必读:基础篇(6)的相关文章

JAVA程序员必读:基础篇(8)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31 作者:ZSC 太平洋网络学院 2.6什么是接口 接口是一个收集方法和常数表单的契约.当类执行一个接口,它就许诺声明在那个接口中执行所有的方法. 接口是一个设备或者一个系统,它是用于交互的无关的实体.根据这个定义,远程控制是一个在你和电视的接口:而英语是两个人之间的接口:强制在军事中的行为协议是不同等价人之间的接口.在JAVA语言中,接口是一个设备,它是用来与其它对象交互的设备.一个接口可能对一个协议是类似的.实际上,

JAVA程序员必读:基础篇(9)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31作者:ZSC 太平洋网络学院 2.8 面向对象概念的问题和练习 本节教程测试一下你对对象.类.消息等等的理解,我们是通过做一些练习以及回答一些问题来进行的. 2.8.1 问题 你可以使用API文档来回答这些问题: ClickMe applet使用Color.red来设置画图颜色为红色.其它有什么颜色可以象这样来使用? 怎样设置颜色为紫色(purple)? 2.8.2 练习 现在,利用你从API文档中学到的知识来修改Cl

JAVA程序员必读:基础篇(7)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31作者:ZSC 太平洋网络学院 2.5什么是继承 一个类可以从它的父类继承状态和行为.继承为组织和构造软件程序提供了一个强大的和自然的机理. 总得说来,对象是以类得形式来定义得.你可能现在已经可以从它类知道许多对象了.即使你如知道,如果我告诉你它是一辆自行车,你就会知道它有两个轮子和脚踏板等等.面向对象系统就更深入一些了,它允许类在其它类中定义.比如,山地自行车.赛车以及串座双人自行车都是各种各样的自行车.在面向对象技术

JAVA程序员必读:基础篇(5)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31作者:ZSC 太平洋网络学院 2.4实例和类成员 2.4.1理解实例和类成员 下面详细讨论一下实例和类成员,具体涉及变量和方法以及类变量和方法: 你这样声明一个成员变量,比如在类Myclass中有一个float型的aFloat: class MyClass { float aFloat; } 这样你就声明一个实例变量.每次你创建一个类的实例的时候,系统就为实例创建了类的每一个实例变量的副本.你可以从对象中访问对象的实例

JAVA程序员必读:基础篇(4)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31作者:ZSC 太平洋网络学院 2.3什么是类 类实际上是对某种类型的对象定义变量和方法的原型. 在现实世界中,你经常看到相同类型的许多对象.比如 ,你的自行车只是现实世界中许多自行车的其中一辆.使用面向对象技术,我们可以说你的自行车是自行车对象类的一个实例.通常,自行车有一些状态(当前档位.两个轮子等等)以及行为(改变档位.刹车等等).但是,每辆自行车的状态都是独立的并且跟其它自行车不同. 当厂家制造自行车的时候,厂商

JAVA程序员必读:基础篇(3)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31作者:ZSC 太平洋网络学院 2.2什么是消息 软件对象之间进行交互作用和通讯是利用消息的. 单一的一个对象通常不是很有用的.相反,一个对象通常是一个包含了许多其它对象的更大的程序或者应用程序.通过这些对象的交互作用,程序员可以获得高阶的功能以及更为复杂的行为.你的自行车如果不使用它的时候,它就是一堆铝合金和橡胶,它没有任何的活动.而只有当有其它的对象来和它交互的时候才是有用的. 软件对象与其它对象进行交互与通讯是利用

JAVA程序员必读:基础篇(2)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31作者:ZSC 太平洋网络学院 二.面向对象编程 如果你以前从来没有使用面向对象语言,你需要在开始编写JAVA代码之前先理解这个概念.你需要理解什么是对象.什么是类.对象和类的关系怎样以及使用消息怎样在对象之间进行通讯.本教程的前面部分将描述面向对象编程的概念,而后面的教程将教你怎样将这个概念编成代码. 2.1什么是对象 对象是一些相关的变量和方法的软件集.软件对象经常用于模仿现实世界中我们身边的一些对象.对象是理解面向

JAVA程序员必读:基础篇(1)

程序|程序员 JAVA程序员必读:基础篇 时间:2001/09/13 13:31 作者:ZSC 太平洋网络学院 JAVA是有SUN公司开发的新一代编程语言,它可以用在各种不同的机器.操作系统的网络环境中进行开发.不论你使用哪种浏览器或者使用哪种操作系统(Windows.Unix等等),只要浏览器支持JAVA,你就可以看到生动的主页.JAVA正在逐步成为Internet应用的主要开发语言,它彻底改变了应用软件的开发模式,为迅速发展的信息世界增添了新的活力.所以作为Internet应用的开发技术人员

JAVA程序员必读:基础篇(目录)

程序|程序员 JAVA是有SUN公司开发的新一代编程语言,它可以用在各种不同的机器.操作系统的网络环境中进行开发.不论你使用哪种浏览器或者使用哪种操作系统(Windows.Unix等等),只要浏览器支持JAVA,你就可以看到生动的主页.JAVA正在逐步成为Internet应用的主要开发语言,它彻底改变了应用软件的开发模式,为迅速发展的信息世界增添了新的活力.所以作为Internet应用的开发技术人员不可不看JAVA,而JAVA程序不可不先从基础学起,这正是JAVA程序员必读:基础篇的用意. 本J