gpt4 book ai didi

java - 下面的java代码有什么问题吗?

转载 作者:行者123 更新时间:2023-12-01 18:16:31 25 4
gpt4 key购买 nike

我在编译时遇到一些参数错误。不知道这有什么问题。

我期望输出是bj。由于类 a 没有默认构造函数,因此在编译时,JVM 将创建默认构造函数。剩余的输出为 bj。我错过了什么吗?

class a
{

a(String b)
{
System.out.println("this is a");
}
}
class b extends a
{
b()
{
System.out.println("b");
}
}

class c extends b
{
c(String j)
{
System.out.println(j);
}
public static void main(String...k)
{
new c("J");
}
}

错误如下所示:

javac construct.java
construct.java:12: error: constructor a in class a cannot be applied to given ty
pes;
{
^
required: String
found: no arguments
reason: actual and formal argument lists differ in length
1 error

最佳答案

since Class a doesn't have default constructor so at compilation time default constructor would be created by JVM

仅当您未定义自定义构造函数时,才会创建默认构造函数。

您的 IDE 应在 b() 声明中显示以下消息:

There is no default constructor available in 'package.a'

当您尝试实例化 b 时,它对 super() 进行了隐式调用,但只发现 a(String b) 而不是a()。正如错误消息所示,a(String b) 期望一个 String 但没有参数。

解决方案是创建无参数 a() 构造函数或在类 b 构造函数中调用 a(String b) 构造函数。

class b extends a
{
b()
{
super(""); // call to class a constructor passing some string as argument
System.out.println("b");
}
}

关于java - 下面的java代码有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29186552/

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