を上書きは、私はちょうど右にジャンプします、プロパティのアクセサ
と仮定オーディオファイルはそうのような抽象クラスです。
abstract class AudioFile
{
public string Title { get; set; }
}
は今、ほとんどの場合、a.Titleを使用するために最適ですAudioFileを継承する他のクラス。しかし、MPEGファイルの場合には、これはID3変数に別のオブジェクトに格納されています。私が望む何
class MPEG : AudioFile
{
private ID3 id3;
public new string Title {
get {
return id3.Title;
}
set {
id3.Title = value;
}
}
}
class WMA : AudioFile
{
}
は、次の操作を実行することです:
AudioFile a;
if(isMPEG) {
a = LoadMPEG(); // Returns a new MPEG instance.
} else
if(isWMA) {
a = LoadWMA(); // Return a new WMA instance.
}
Console.WriteLine(a.Title);
// Other stuff with a.
私は出力を期待しますMPEGかWMAかに関わらず、その曲のタイトル。しかし、MPEGの場合、期待通りに動作しません(id3オブジェクトを使用していないため)。それが動作する唯一の方法は次のとおりです。
if(isMPEG) {
MPEG a = LoadMPEG(); // Returns a new MPEG instance.
Console.WriteLine(a.Title);
// Other stuff with a.
} else
if(isWMA) {
WMA a = LoadWMA(); // Return a new WMA instance.
Console.WriteLine(a.Title);
// Other stuff with a.
}
これは私が望むものではありません。私がしたいことをやる方法についてのアイデアは?
偉大な答えは、魅力的なように働いた。ありがとう!そして、はい、私はJavaの背景から来ています。 :) –