Java 现在声明,稍后定义

标签 java class methods declare

在 java 中,您可以在类中声明一个方法,然后在类中或类外定义它吗?

我正在寻找类似于 C++ 的东西,您在其中声明它然后在类外部使用::格式稍后定义它?

此外,不要重载该方法。

最佳答案

C++ 成员函数从不在“类外”定义。 Class_Name:: 前缀将它们放在类中。它们只是不在类声明中。

在 C++ 中拆分声明和定义是必要的,因为单独的编译模型基于文本文件包含。无法从已编译的目标文件中提取有关类的详细信息,因此类型信息的浓缩摘要被提取到头文件中,并且必须包含在该类的所有客户端模块中。 Java 有一种更复杂的目标文件格式,可以在没有头文件的情况下获取有关类的信息。

语言中出现的另一种对声明的需求是处理函数之间相互递归的情况或其他形式的循环引用(例如,在 Wirth 的原始 Pascal 语言中需要它们,该语言不支持将程序拆分为单独的模块) . Java 无需前向声明即可实现相互递归。您只需要将类型检查推迟到完全解析。 Pascal 中的前向声明不是为了使相互递归成为可能,而是为了让它一次编译成为可能,这样你就可以在编译下一个函数之前发出一个函数的代码。 (这在您的硬件是 1968 年制造时很重要。)

如果您使用的语言不需要声明,为什么还要费心寻找一种方法将它们放回去?这就像你被释放后继续吃 jail 食物。 (这可能是“习得性无助”的一个例子。)

无论如何,几十年来最先进的类型系统的特点是尽可能地避免声明,而是依赖类型推断。看看你必须用 C++ 写多少次类名才能完成任何事情。 类 myclass { public: myclass(); }; myclass::myclass() {/* 构造函数 */}. myclass 的四次重复只是为了创建一个什么都不做的虚拟类,其构造函数在类声明之外定义。

关于Java 现在声明,稍后定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236386/

相关文章:

java - 调用 void 方法,然后在一行上传递对象

java - 当我显示对话框时,抛出异常 "UnhandledAlertException: Modal dialog present"

c++ - 不确定如何在我的主函数中调用我的类(编译)

c++ - 使用 Makefile 在多个文件 C++ 中构建互连类

java - 应该 move 球的程序,但不执行方法运行

java - Java 中的类变量和类方法,我的错

java - 如何从包含数字、字符的字符串中获取整数?

java - JPA/Hibernate Persist 级联,即使它不应该

java - 将 Vector 转换为 HTML5 Canvas(DXF 到 Canvas 坐标)

html - 与 BEM 类命名约定混淆。更深一层