public abstract class MusicalInstrument {
public abstract void Play();
}
public abstract class TonalInstrument : MusicalInstrument {
public abstract void Retune(Tuning tuning);
}
public class StringInstrument : TonalInstrument {
public void Restring(StringCollection strings) { /* .. */ }
}
public class WindInstrument : TonalInstrument {
public void ChangeReed(Reed reed) { /* .. */ }
}
public class Drumkit : MusicalInstrument {
public void ChangeSkins() { /* .. */ }
}
public class Piano : StringInstrument {
}
public class Flute : WindInstrument {
}
Code snippet taken from "Simulating Multiple Inheritance In C#".