Ну вот вы делаете в приложении рисование, и у вас есть ограниченный набор инструментов -- карандаш, ластик и прямоугольники. В нескольких местах вы принимаете инструмент и в зависимости от его типа выполняете действия -- в одном месте рисуете, во втором ввод принимаете. И будет у вас там чёь вроде
when(tool) {
is Line -> canvas.drawLine(tool.start, tool.end)
is Rect -> ...
is Eraser -> ...
}Основная фишка силдов -- если вы в when перечислили все ваши подтипы, с вас не потребуют
else ->Зато как только вы вдруг добавите кружочки -- вы сразу будете знать по ошибкам, где именно вам в коде эти кружочки надо обработать.
Как-то так.