gpt4 book ai didi

java - 为什么在尝试调用构造函数或方法时将 "this"作为参数隐式传递?

转载 作者:行者123 更新时间:2023-11-29 08:26:04 25 4
gpt4 key购买 nike

考虑这段java代码

    Public class MyClass {
public void method(int a) {
doSometing() ;
}
Public static void main(String[] args) {
MyClass obj = new MyClass() ;
int a = 0 ;
obj.method(a) ;
}
}

显然在 java 中,每当尝试调用构造函数或方法时,事实证明实际上存在另一个隐式值由 Java 传递,而不是由 Developer 传递的显式传递,即“this”,我熟悉 java 中“this”关键字的概念,但我认为将“this”传递给方法或如果我已经声明了此方法属于哪个对象,则隐式构造函数,那么为什么必须传递关键字“this”? ,所以在上面的例子中,我声明了一个类“MyClass”和该类“method”中的一个方法,返回类型为“void”然后在主函数中我声明了该类“obj”的新实例并调用该方法“方法”将变量“a”作为参数传递,所以在幕后实际发生了什么,当声明一个类的新实例并调用它的构造函数时,实际上隐式传递了一个参数,即“this”关键字,这就是幕后的真实情况:

MyClass obj = new MyClass(this) ;

同样的事情也适用于调用方法:

obj.method(this,a) ;

就是这样,所以请任何人帮我解决这个问题,因为我正在尝试学习 Java,在我继续学习高级主题之前,我需要确保一切都清楚了

谢谢

最佳答案

我相信您正在寻找的是:所有(?)OO 编程语言都是通过将“this”作为参数传递给类中包含的每个函数来实现的。语言的差异在于该功能的实现方式。

在 Python 中,函数只是定义为函数,您将“this”作为第一个参数传递。

大多数其他 OO 语言在传递“this”时会隐藏它,但它仍然存在——它必须存在。您可以将“this”的传递视为方法和函数之间的区别。

关于java - 为什么在尝试调用构造函数或方法时将 "this"作为参数隐式传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52997621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com