gpt4 book ai didi

java - "Constructor Album in class Album cannot be applied to different types"

转载 作者:行者123 更新时间:2023-12-01 22:36:45 25 4
gpt4 key购买 nike

我目前很难编译我的新子类:

public class CompilationAlbum extends Album {

private String seriesOfAlbums;

public CompilationAlbum(String seriesOfAlbums) {
this.seriesOfAlbums = seriesOfAlbums;
albumType = "Compilation";
}
}

谁能指出我做错了什么?错误似乎在于构造函数,但我不明白为什么这会导致错误。错误消息还显示“实际参数列表和形式参数列表的长度不同。”

编辑:Album 类,减去方法,如下所示:

import java.util.ArrayList;

public class Album {

private String name;
private ArrayList<Track> trackList;
private int length;
private int fileSize;
private double averageRating;
private String albumType;

public Album(String name){
this.name = name;
trackList = new ArrayList<Track>();
}

最佳答案

如果您没有在子类构造函数的第一行显式调用父类(super class)的构造函数,则编译器会插入对 super() 的调用。由于 Album 没有无参构造函数,因此编译会失败,因为插入的 super() 调用无效。

有两种方法可以解决这个问题 - 要么使用一些 String 参数调用现有的父类(super class)构造函数(您必须决定什么对您的特定用例有意义),要么向父类(super class)添加一个无参数构造函数(同样) ,此构造函数的行为将取决于您实际尝试执行的操作)。

这是一种可能有意义的方法:

public class CompilationAlbum extends Album {

private String seriesOfAlbums;

public CompilationAlbum(String name, String seriesOfAlbums) {
super(name);
this.seriesOfAlbums = seriesOfAlbums;
albumType = "Compilation";
}
}

关于java - "Constructor Album in class Album cannot be applied to different types",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26762623/

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