0

First of all I'm sorry for the wordiness of the question, I am unsure how to ask, but I can explain it better.

I have a parent class and 2 child classes, only one is relavent for the example

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

Now say I have an MP3File object but its referencing 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
4

1 回答 1

1

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

MP3File 是 AudioFile 的扩展;这应该意味着 MP3File 对象是 AudioFile 对象的特例,并且 MP3File 唯一适用于 MP3 文件的事情。

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

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

于 2013-03-29T01:40:41.933 回答