javaSE_8系列博客——Java语言的特性(三)--类和对象(11)--从方法返回值
来源:互联网 发布:java php rpc框架 编辑:程序博客网 时间:2024/06/08 09:53
以下几种情况,会让一个方法返回到调用它的代码
1. 完成方法中的所有语句
2. 达到return语句
3. 抛出异常(稍后覆盖)
以第一个为例。 在方法声明中声明方法的返回类型。在方法的正文内,你使用return语句来返回值。 声明为void的任何方法都不返回值。它不需要包含return语句,但它可以这样做。在这种情况下,return语句可以用于分支出控制流块并退出该方法,并且简单地使用如下:
return;
如果您尝试从声明为void的方法返回值,则会收到编译器错误。
任何未声明为void的方法都必须包含具有相应返回值的return语句,如下所示:
return returnValue;
返回值的数据类型必须与方法声明的返回类型相匹配;您不能从声明为返回布尔值的方法返回整数值。 Rectangle Rectangle类中的getArea()方法在对象部分中讨论时返回一个整数:
// a method for computing the area of the rectangle public int getArea() { return width * height; }
此方法返回表达式width * height计算的整数。
getArea方法返回一个原始类型。一种方法也可以返回一个引用类型。例如,在一个程序来操纵Bicycle 对象,我们可能会有一个这样的方法:
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是java.lang.Number的子类,它又是Object的一个子类,如下图所示。
现在假设你有一个方法声明返回一个数字:
public Number returnANumber() { ...}
returnANumber方法可以返回一个ImaginaryNumber而不是一个Object。 ImaginaryNumber是一个数字,因为它是Number的子类。但是,对象不一定是数字 - 它可以是字符串或另一种类型。 您可以覆盖一个方法并定义它以返回原始方法的子类,如下所示:
public ImaginaryNumber returnANumber() { ...}
这种称为协变返回类型的技术意味着允许返回类型与子类方向相同。
注意:您也可以使用界面名作为返回类型。在这种情况下,返回的对象必须实现指定的接口。
- javaSE_8系列博客——Java语言的特性(三)--类和对象(11)--从方法返回值
- javaSE_8系列博客——Java语言的特性(三)--类和对象(5)--定义方法
- javaSE_8系列博客——Java语言的特性(三)--类和对象(9)--对象的创建
- javaSE_8系列博客——Java语言的特性(三)--类和对象(10)--对象的使用
- javaSE_8系列博客——Java语言的特性(三)--类和对象(8)--对象
- javaSE_8系列博客——Java语言的特性(三)--类和对象(3)--类的声明
- javaSE_8系列博客——Java语言的特性(三)--类和对象(13)--理解类的成员
- javaSE_8系列博客——Java语言的特性(三)--类和对象(2)--类(宏观概述)
- javaSE_8系列博客——Java语言的特性(三)--类和对象(15)--嵌套类
- javaSE_8系列博客——Java语言的特性(三)--类和对象(1)--概述
- javaSE_8系列博客——Java语言的特性(三)--类和对象(4)--声明成员变量
- javaSE_8系列博客——Java语言的特性(三)--类和对象(12)--使用this关键字
- javaSE_8系列博客——Java语言的特性(三)--类和对象(14)--初始化字段
- javaSE_8系列博客——Java语言的特性(三)--类和对象(21)--枚举类型
- javaSE_8系列博客——Java语言的特性(三)--类和对象(21)--何时使用Lambda 表达式?
- javaSE_8系列博客——Java语言的特性(三)--类和对象(20)--嵌套类(Lambda 表达式--VS--方法引用)
- javaSE_8系列博客——Java语言的特性(三)--类和对象(7)--给方法或者构造器传输信息
- javaSE_8系列博客——Java语言的特性(三)--类和对象(16)--嵌套类(内部类的示例)
- Java快捷跳出多重循环
- DIV+CSS第二天 定位
- OpenFlow协议分析
- cocos 用摄像机来实现地图的缩放和移动
- php综合web开发(5)
- javaSE_8系列博客——Java语言的特性(三)--类和对象(11)--从方法返回值
- Java web 从数据库读取菜单,显示在jsp中
- mybatis的探索过程之SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession作用域和生命周期
- eclipse使用working set管理项目
- html 5新增结构标签
- ANDROID中EDITTEXT设置输入条件
- The required Server component failed to start so Tomcat is unable to start
- 将图片保存到相册的工具类
- An internal error occurred during: "Launching MVC on Tomcat 6.x". java.lang.NullPointerException