Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java super()是唯一可以在需要时隐式插入构造函数的代码吗?_Java - Fatal编程技术网

Java super()是唯一可以在需要时隐式插入构造函数的代码吗?

Java super()是唯一可以在需要时隐式插入构造函数的代码吗?,java,Java,我正试图稍微了解一下Java编译器中的构造函数。我知道Java中有很多关于super关键字的主题 我在这个问题上主要关注的超级关键词方面是: Java编译器是否会隐式生成除 默认值(super()),例如:super(args1,args2) 这句话是真的吗 如果构造函数在第一条语句中没有super或super,我100%确信super()是Java编译器将插入构造函数的唯一代码 回答你的问题: Java编译器是否有隐式插入其他内容的情况 像构造函数中的super(args1、args2)一样?

我正试图稍微了解一下Java编译器中的构造函数。我知道Java中有很多关于super关键字的主题

我在这个问题上主要关注的超级关键词方面是:

Java编译器是否会隐式生成除 默认值(
super()
),例如:
super(args1,args2)

这句话是真的吗

如果构造函数在第一条语句中没有super或super,我100%确信super()是Java编译器将插入构造函数的唯一代码


回答你的问题:

Java编译器是否有隐式插入其他内容的情况 像构造函数中的super(args1、args2)一样?”

Ans:-不,您需要手动添加

“我百分之百确信super()是Java编译器编写的唯一代码 如果构造函数没有super或 “这是第一句话吗?”


:-编译器隐式添加父类的默认构造函数。如果需要,但不存在


请逐行阅读

编译器链接中提供的详细信息。默认情况下,编译器将在子类构造函数中生成对
super()
构造函数的调用,作为第一条语句,而这是编译器就您的问题隐式为您做的唯一事情


如果超类没有默认构造函数,则必须在子类的构造函数中显式调用对您可用的构造函数(以及您希望在可用构造函数中使用的构造函数)。

“如果它是必需的,但不存在。”-澄清一下:始终需要超构造函数调用,唯一没有自动添加的情况是当第一个语句是对a)一个超级构造函数或b)同一类的另一个构造函数(然后负责调用超级构造函数)的调用时。我会说是的。因为构造函数的主要目的是初始化那个类的实例,对于超类也是如此。在我看来,这个问题有点误导。字节码中的内容并不总是整齐地相互对应,字节码中存在一些根本不存在的概念。当然,编译器实际上并不会修改代码——它知道,在字节码方面,代码工作需要超构造函数调用,并假设它是隐式的,除非它是显式的。这不是同一件事,尽管看起来可能是这样。