java方法(转)

java方法(转)(@more@)在本章的开始提到,类通常由两个要素组成:实例变量和方法。方法是个很大的话题,因为java给他们如此大的功能和灵活性。事实上,下一章的大部分都用来介绍方法。然而,你现在需要学习一些基础以便你能开始把方法加到你的类中。

这是方法一般的形式:

类型名(参数列表){
//身体的方法}


其中,类型指定了方法返回的数据类型。这可以是任何合法有效的类型,包括你创建的类的类型。如果该方法不返回任何值,则它的返回值类型必须为空白。方法名由名称指定。除了被当前作用域中的其他项使用的标识符以外,方法名可以是任何合法的标识符.parameter-list(自变量列表)是一系列类型和标识符对,用逗号分开。自变量本质上是变量,它接收方法被调用时传递给方法的参数值。如果方法没有自变量,那么自变量列表就为空。

对于不返回空白类型的方法,使用下面格式的返回语句,方法返回值到它的调用程序:

返回值;

其中,价值是返回的值。接下来,你将看到怎样创建多种类型的方法,包括带参数的和那些有返回值的方法。

6.4.1为框类添加一个方法

尽管创建一个仅包含数据的类是相当不错的事情,但这样的情况很少发生。大部分情况是你将使用方法存取由类定义的实例变量。事实上,方法定义大多数类的接口。这允许类实现函数可以把内部数据结构的特定布局隐蔽到方法抽象后面。除了定义提供数据的存取的方法,你也可以定义被类的内部自己所使用的方法。

让我们由对框类增加一个方法开始。回顾一下前面计算盒子体积的例子,你会发现用框类有时会比使用BoxDemo类能更好地处理这个问题。不管怎么说,一个盒子的体积依赖于盒子的大小,这就是我们想到用框类来计算盒子的体积。为了做到这一点,你必须对框类增加一个方法,示例如下:

//这个程序在盒子里面类包含一个方法。

类盒子{双宽度;双高度;双深度;

//显示一个盒子的体积空隙体积(){system . out。打印(“体积”);
system . out。println(宽*高*深度);}}



类BoxDemo3 {

公共静态孔隙主要(String参数[]){
盒mybox1=new盒();
盒mybox2=new盒();

//赋值
mybox1 mybox1的实例变量。宽度=10;
mybox1。身高=20;
mybox1.depth=15;

/*指定不同的值mybox2

的实例变量*/
mybox2。宽度=3;
mybox2。身高=6;
mybox2.depth=9;

//
mybox1.volume卷第一框显示();

//显示第二个盒子的体积
mybox2.volume ();}}



该程序产生的输出如下,与先前版本程序的输出一样。

体积是3000.0
体积是162.0

注意看下面两行程序:

mybox1。体积();
mybox2。体积();

该例的第一行调用mybox1的体积()方法。也就是,它使用对象名加点号运算符调用mybox1对象的体积()方法。这样,调用mybox1。体积()显示mybox1定义的盒子的体积,调用mybox2。体积()将显示mybox2定义的盒子的体积。每次调用体积(),它都会显示指定对象的体积。

如果你对方法调用的概念比较陌生,下列的讨论将有助于澄清该概念。当mybox1。体积()被执行时,Java运行系统将程序控制转移到体积()定义内的代码。当体积()内的语句执行后,程序控制返回调用者,然后执行程序调用的下一行语句. Java执行方法的过程类似于子程序的运行。

在体积()方法中有一些需要注意的地方:实例变量宽度、高度和深度被直接引用,并没有在它们前面加对象名或点号运算符。当一个方法使用由它的类定义的实例变量时,它可以直接这样做,而不必使用显式的对象引用和使用点号运算符。这是很容易理解的。一个方法总是被它的类的对象调用。只要这个调用过程一发生,对象就是可见的。因此,在方法中就没有必要二次指定对象了。这意味着,卷()中的宽度、高度和深度已经隐含地引用了调用体积()方法中的这些变量的拷贝。

让我们复习一下:当一个实例变量不是被该实例变量所在类的部分代码访问时,它必须通过该对象加点运算符来访问。但是当一个实例变量被定义该变量的类的代码访问时,该变量可以被直接引用。同样的规则也适用于方法。

6.4.2返回值
执行卷()方法确实将计算盒子体积的值返回到盒子类,但这并不是最好的方法,例如,你的程序的其他部分如何知道一个盒子的体积,而不显示它的值呢?一个更好地实现体积()的方法是将它计算的盒子体积的结果返回给它的调用者。下面的例子是对前面程序的改进,它正是这样做的:

java方法(转)