java - Song类,使用抽象类和接口(interface)

标签 java inheritance interface abstract implements

我试图用这个程序做的是使用 Song 类的 toString 输出歌曲的信息。当我输出它时,除了歌曲类型/流派之外,一切都很好。它仍然输出 UNDETERMINED。

 abstract class Song implements ISong //SONG CLASS
 {
private String name; 
private String rating;
private int id;
private SongType genre;

public Song()
{
    name = " ";
    rating = " ";
    id = 0;
    genre = SongType.UNDETERMINED;
}
public Song(String name, String rating, int id)
{
    this.name = name;
    this.rating = rating;
    this.id = id;
    this.genre =Song.UNDETERMINED;
}
public void setName(String name)
{
    this.name = name;
}
public void setRating(String rating)
{
    this.rating = rating;
}
public void setID(int id)
{
    this.id = id;
}
public String getName()
{
    return(this.name);
}
public String getRating()
{
    return(this.rating);
}
public int getID()
{
    return(this.id);
}


@Override
public String toString()
{
    return("Song: " + this.name +
           "\nID: " + this.id +
           "\nRating: " + this.rating +
           "\nGenre: " + this.genre);
}
}

class Pop extends Song //POP CLASS
{   

public Pop(String name, String rating, int id)
{
    super(name, rating, id);
}
}

interface ISong //INTERFACE
{
public enum SongType {POP, COUNTRY, HIPHOP, SOUL, UNDETERMINED;}

}

public class test{
public static void main(String [] args)
{
    Song one = new Pop("Pop Song", "Five", 123); 
    System.out.println(one);
}

}

最佳答案

When I output it, everything is fine except the SongType/genre. It is still outputting UNDETERMINED.

但是您实际上在哪里将流派字段设置为除 SongType.UNDETERMINED 之外的任何内容?

我建议您为 Song 类和 ISong 接口(interface)提供一个返回当前流派的 public SongType getGenre() 方法,以及一个适当的 setter 方法,public void setGenre(SongType流派) 以及在需要时接受 SongType 流派参数的构造函数。 toString() 方法应调用 getGenre() 方法来获取当前流派状态。

最重要的是,在尝试打印之前,您需要将具体类中的流派设置为 SongType.UNDETERMINED 以外的内容。

关于java - Song类,使用抽象类和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31568677/

相关文章:

javascript - 在 Object.defineProperty 中调用父级实现

javascript - 在knockoutjs组件中实现继承

c# - 界面设计?我可以迭代地做吗?我应该如何处理界面的更改?

java - 如何迭代文本文件以执行不同的任务(包括创建未知数量的对象),具体取决于我正在阅读的行

java - 如何在 Beanshell 预处理器中将逗号分隔的字符串拆分为 3 个变量?

javascript - 在 Odoo 9 中重写 javascript 函数

google-app-engine - 使用反射将数据从序列化动态转换回 Go 结构

接口(interface)上的 Java 实例

java - 安卓。设置左/右边距不起作用

Java 重载与覆盖