首先,对于这个问题的冗长,我很抱歉,我不确定该怎么问,但是我可以更好地解释它。
我有一个父类和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。