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 {
     
}