有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

oop为什么必须在Java中指定方法返回类型?

有时我会看到这样声明的方法:

public MethodName() { ... }

其他时候,我会看到用一个类声明的方法,该类定义了它们返回的类型(?)。例如:

public ClassName methodName() { ... }

这有什么意义?为什么我必须指定返回类型


共 (2) 个答案

  1. # 1 楼答案

    是的,您必须始终指定方法返回类型。之所以必须这样做,是因为Java是强静态类型的,这意味着编译器必须在编译时知道所有表达式的类型

    你看到的没有返回类型的方法实际上是类的constructor,使用它你可以创建类的实例

  2. # 2 楼答案

    当你有一个构造函数时,它没有返回类型,从技术上讲,签名是<init>(Lpackage.Type;)V,其中V代表void。它不返回该类型的对象,而是接受该类型的对象并对其进行初始化


    在JVM级别,返回类型是签名的一部分。如果使用类似

    的方法编译程序,请考虑此方法。
    public static long zero() { return 0; }
    

    但是你以后会重新编译这个方法,而不是像这样调用它的方法

    public static int zero() { return 0; }
    

    使用旧代码编译的方法将无法找到它们编译时使用的方法。这是因为编译这些方法时假设返回了long,而它们甚至可能不会在编译时返回int