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