首先,对于这个问题的冗长,我很抱歉,我不确定该怎么问,但是我可以更好地解释它。

我有一个父类和2个子类,该示例仅涉及一个

public abstract class AudioFile{ //parent
blah blah blah
} //end class AudioFile

public class MP3File extends AudioFile{
private int bitRate; //unique to MP3File class
} //end class MP3File


现在说我有一个MP3File对象,但是它引用了AudioFile

public class Driver{
... // pretend main exists
AudioFile file = new MP3File();
file.setBitRate(100); //pretend method exists

edit(file);

private void edit(AudioFile audio)
{
 //how would I edit the bit rate?
} //end method edit

} //end class Driver

最佳答案

您问题的真正答案是“不要这样做”。

MP3File是AudioFile的扩展;这意味着MP3File对象是AudioFile对象的特例,而MP3File的唯一适用内容是MP3文件所特有的。

您的编辑方法将AudioFile作为参数。根据您的示例,AudioFiles没有bitRate参数。

如果您能够将传递给编辑的参数转换为MP3File,那仍然不是一个好主意。这意味着该方法正在处理MP3File对象,并且不应假定传递给它的任何AudioFile对象都可以转换为MP3File。

07-27 23:51