public abstract class MusicalInstrument {
public abstract void Play();
}
public interface ITonalInstrument {
public void Retune(Tuning tuning);
}
public interface IStringInstrument : ITonalInstrument {
public void Restring(StringCollection strings);
}
public interface IWindInstrument : ITonalInstrument {
public void ChangeReed(Reed reed);
}
public interface IPolyphonicInstrument : ITonalInstrument {
public uint MaxSimultaneousNotes { get; }
}
public class Flute : MusicalInstrument, IWindInstrument {
}
public class Artemis : MusicalInstrument, IWindInstrument, IStringInstrument {
}
public class Piano : MusicalInstrument, IStringInstrument, IPolyphonicInstrument {
}
Code snippet taken from "Simulating Multiple Inheritance In C#".