zoukankan      html  css  js  c++  java
  • java 方法的返回值(翻译自Java Tutorials)

     原文出自 http://www.cnblogs.com/ggjucheng/archive/2012/11/29/2795468.html

    代码调用方法时,它会在以下情况返回:

    完成方法所有的语句

    出现return语句

    抛出一个异常

    以最先出现的为准。

    在方法声明中,会声明方法的返回类型。方法体内,可以使用return语句返回值。

    任何声明了void的方法,不需要返回值,它非必须包含一个return语句,但是它也可以这么做。这个情况下,return语句可以用来跳出控制流的代码块,并退出方法,简单使用如下:

    return;

    在一个声明void的方法,返回一个值,编译器会报错。

    不是声明为void的方法,必须包含一个return语句,紧跟对应的返回值,就像这样:

    return returnValue;

    返回值的数据类型必须匹配方法声明的返回数据类型;不能在一个声明返回类型是整数的方法,返回一个boolean类型的值。

    下面讨论的Rectangle的getArea()方法返回一个整数:

        // a method for computing the area of the rectangle
        public int getArea() {
            return width * height;
        }

    这个方法返回表达式width*height计算出来的整数。

    getArea方法返回原生类型。方法也可以放回引用类型。例如,在程序中操纵Bicycleobjects,我们也许会这么做:

    public Bicycle seeWhosFastest(Bicycle myBike, Bicycle yourBike,
                                  Environment env) {
        Bicycle fastest;
        // code to calculate which bike is 
        // faster, given each bike's gear 
        // and cadence and given the 
        // environment (terrain and wind)
        return fastest;
    }

    返回类或接口

    如果本节混淆,跳过它,等到你已经完成了接口和继承的学习再回头看这个。

    当一个方法是用类名作为返回类型,例如whosFastest的做法,返回的对象的类的类型,必须是声明的返回类型的子类,或者就是声明的返回类型。假设有这么一个类层次结构,ImaginaryNumber是Number的子类,Number是Object的子类,如下图所示:

    The class hierarchy for ImaginaryNumber

    ImaginaryNumber类层次结构

    假如有这么一个方法返回Number:

    public Number returnANumber() {
        ...
    }

    returnANumber方法可以返回ImaginaryNumber,但是不能返回一个Object。ImaginaryNumber是一个Number类,因为它是Number的子类。尽管如此,一个Object类未必是Number—它可以是一个String或者是其他类型。

    public ImaginaryNumber returnANumber() {
        ...
    }

    这种技术称为协变返回类型,返回类型允许是多个子类,但是是同一分支。

    注意:你也可以使用接口作为返回类型,这个情况下,返回的对象必须实现了这个接口。

  • 相关阅读:
    学习使用资源文件[4] 用资源中的图片做背景、使用 LoadFromResourceID
    WinAPI: ShellExecute 打开外部程序或文件
    学习使用资源文件[8] 关于 HInstance
    学习使用资源文件[3] 用 Image 显示资源中的图片
    薛定谔之猫_百度百科
    美国创业公司招聘工程师
    Two star programming
    vector 自定义排序
    Data Structures, Algorithms, & Applications in Java Suffix Trees
    Three Star Programmer
  • 原文地址:https://www.cnblogs.com/ggjucheng/p/2795468.html
Copyright © 2011-2022 走看看