package Ġcom . nic op asso . kotlin playground . sealed _ classes Ċ Ċ /* ĊĠĠ Ġ___ ĠĠĠĠ Ġ___ ĠĠĠĠ Ġ___ ĠĠĠĠ Ġ_ ĠĠĠĠĠĠ Ġ___ ĠĠĠĠ Ġ___ ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ___ ĠĠĠĠ Ġ_ ĠĠĠĠĠĠ Ġ___ ĠĠĠĠ Ġ___ ĠĠĠĠ Ġ___ ĠĠĠĠ Ġ___ ĠĠĠĠ Ġ___ ĊĠ Ġ/ Ġ__ | ĠĠ Ġ| Ġ__ | ĠĠ Ġ/ ĠĠ Ġ\ ĠĠ Ġ| Ġ| ĠĠĠĠ Ġ| Ġ__ | ĠĠ Ġ| ĠĠ Ġ\ ĠĠĠĠ Ġo ĠO ĠO Ġ Ġ/ Ġ__ | ĠĠ Ġ| Ġ| ĠĠĠĠ Ġ/ ĠĠ Ġ\ ĠĠ Ġ/ Ġ__ | ĠĠ Ġ/ Ġ__ | ĠĠ Ġ| Ġ__ | ĠĠ Ġ/ Ġ__ | ĊĠ Ġ\ __ Ġ\ ĠĠ Ġ| Ġ_ | ĠĠĠ Ġ| Ġ- Ġ| ĠĠ Ġ| Ġ| __ ĠĠ Ġ| Ġ_ | ĠĠĠ Ġ| Ġ| ) Ġ| ĠĠ Ġo ĠĠĠĠĠ Ġ| Ġ(__ ĠĠĠ Ġ| Ġ| __ ĠĠ Ġ| Ġ- Ġ| ĠĠ Ġ\ __ Ġ\ ĠĠ Ġ\ __ Ġ\ ĠĠ Ġ| Ġ_ | ĠĠĠ Ġ\ __ Ġ\ ĊĠ Ġ| ___ / ĠĠ Ġ| ___ | ĠĠ Ġ|_| _| ĠĠ Ġ| ____ | Ġ Ġ| ___ | ĠĠ Ġ| ___ / ĠĠ ĠTS __ [ O ] Ġ Ġ\ ___ | ĠĠ Ġ| ____ | Ġ Ġ|_| _| ĠĠ Ġ| ___ / ĠĠ Ġ| ___ / ĠĠ Ġ| ___ | ĠĠ Ġ| ___ / Ċ _| "" """ | _| "" """ | _| "" """ | _| "" """ | _| "" """ | _| "" """ | Ġ{ ====== | _| "" """ | _| "" """ | _| "" """ | _| "" """ | _| "" """ | _| "" """ | _| "" """ | Ċ "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' ./ o -- 0 0 0 ' "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' "` - 0 - 0 -' ĊĊ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠA Ġsealed Ġclass Ġcan Ġbe Ġsub cl assed Ġand Ġmay Ġinclude Ġabstract Ġmethods Ġwhich Ġmeans Ġsealed Ġclasses Ċ Ġ* Ġare Ġabstract Ġimplicitly . Ċ Ġ* ĠIMPORT ANT : ĠAll Ġthe Ġsubclasses Ġmust Ġbe Ġdeclared Ġin Ġthe Ġsame Ġfile Ġas Ġthe Ġsealed Ġclass Ġitself . Ċ Ġ* Ċ Ġ* ĠThis Ġfeature Ġallows Ġto Ġdefine Ġclass ĠHI ER ARCH IES Ġthat Ġare ĠRESTRICT ED ĠIN ĠI TS ' ĠTY PES . ĠSince Ġall Ċ Ġ* Ġthe Ġsubclasses Ġneed Ġto Ġbe Ġdefined Ġinside Ġthe Ġfile Ġof Ġthe Ġsealed Ġclass , Ġthere 's Ġno Ġchance Ġof Ġunknown Ċ Ġ* Ġsubclasses Ġwhich Ġthe Ġcompiler Ġdoesn 't Ġknow Ġabout . Ċ Ġ* Ċ Ġ* ĠAs Ġopposed Ġof Ġenums , Ġsubclasses Ġof Ġsealed Ġclasses Ġcan Ġbe ĠINST ANTI ATED ĠMULTI PLE ĠTY PES Ċ Ġ* Ġand Ġcan Ġcontain ĠSTATE . Ċ Ġ* Ċ Ġ* ĠThe Ġmain Ġadvantage Ġreve als Ġitself Ġif Ġit 's Ġused Ġin Ġwhen Ġexpressions . Ċ Ġ*/ Ċ open Ġclass ĠNo Se aled M am mal ( val Ġname : ĠString ) Ċ class ĠN SC at ( val Ġcat Name : ĠString ) Ġ: ĠNo Se aled M am mal ( cat Name ) Ċ class ĠN SH uman ( val Ġhuman Name : ĠString , Ġval Ġjob : ĠString ) Ġ: ĠNo Se aled M am mal ( human Name ) Ċ Ċ // Usage : Ċ // the Ġelse Ġbranch Ġis Ġmandatory Ġbecause Ġthe Ġcompiler Ġcannot Ġjust Ġverify Ġall Ġpossible Ġcases Ċ fun Ġg reet NS M am mal ( mam mal : ĠNo Se aled M am mal ): ĠString Ġ= Ġwhen ( mam mal ) Ġ{ ĊĠĠĠ Ġis ĠN SH uman Ġ-> Ġ" Hello Ġ${ mam mal . name }; ĠYou 're Ġworking Ġas Ġa Ġ${ mam mal . job }" ĊĠĠĠ Ġis ĠN SC at Ġ-> Ġ" Hello Ġ${ mam mal . name }" ĊĠĠĠ Ġelse Ġ-> Ġ" Hello Ġunknown " Ċ } ĊĊ Ċ // SE AL ED ĠTO ĠTHE ĠRES C UE ! Ċ sealed Ġclass ĠM am mal ( val Ġname : ĠString ) Ċ class ĠCat ( val Ġcat Name : ĠString ): ĠM am mal ( cat Name ) Ċ class ĠHuman ( val Ġhuman Name : ĠString , Ġval Ġjob : ĠString ): ĠM am mal ( human Name ) Ċ Ċ fun Ġg reet M am mal ( mam mal : ĠM am mal ): ĠString Ġ= Ġwhen ( mam mal ) Ġ{ ĊĠĠĠ Ġis ĠHuman Ġ-> Ġ" Hello Ġ${ mam mal . name }; ĠYou 're Ġworking Ġas Ġa Ġ${ mam mal . job }" ĊĠĠĠ Ġis ĠCat Ġ-> Ġ" Hello Ġ${ mam mal . name }" ĊĠĠĠ Ġ// Ġ' else ' Ġclause Ġnot Ġrequired , Ġall Ġthe Ġcases Ġcovered Ċ } Ċ