0

まず、質問が冗長で申し訳ありません。質問の仕方がわかりませんが、より適切に説明できます。

親クラスと 2 つの子クラスがありますが、この例に関連するのは 1 つだけです

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
4

1 に答える 1

1

あなたの質問に対する本当の答えは、「これをしないでください」です。

MP3File は AudioFile の拡張です。つまり、MP3File オブジェクトは AudioFile オブジェクトの特殊なケースであり、MP3File に当てはまるのは MP3 ファイルに固有のものだけです。

edit メソッドは AudioFile をパラメーターとして受け取ります。あなたの例によると、AudioFilesにはbitRateパラメータがありません。

edit に渡されたパラメータを MP3File にキャストできたとしても、それはまだ悪い考えです。これは、メソッドが MP3File オブジェクトを処理していることを意味し、渡された AudioFile オブジェクトを MP3File にキャストできると想定してはなりません。

于 2013-03-29T01:40:41.933 に答える