{"id":869,"date":"2021-06-29T03:08:34","date_gmt":"2021-06-28T18:08:34","guid":{"rendered":"http:\/\/batmask.dothome.co.kr\/?p=869"},"modified":"2025-09-12T17:36:49","modified_gmt":"2025-09-12T08:36:49","slug":"kotlin-sealed-class-vs-enum","status":"publish","type":"post","link":"http:\/\/batmask.net\/index.php\/2021\/06\/29\/869\/","title":{"rendered":"Kotlin : Sealed class vs Enum"},"content":{"rendered":"\n<p> \ub2e4\uc218\uc758 \ucf54\ub4dc\uc5d0\uc11c Enum \uc5ed\ud560\uc744 \ud558\ub294 \uacf3\uc5d0 Sealed class\ub97c \uc0ac\uc6a9\ud558\ub294\uac78 \ubcf4\uac8c \ub410\uace0, \ud55c \ubc88 \uc815\ub9ac\ud558\uace0 \ub118\uc5b4\uac08 \ud544\uc694\uc131\uc744 \ub290\uaf08\ub2e4. \uac04\ub2e8\ud558\uac8c \uc598\uae30\ud558\uc790\uba74, Sealed class\ub294 enum class\ucc98\ub7fc \ub3d9\uc77c\ud558\uac8c \uc0ac\uc6a9\uac00\ub2a5\ud558\uba74\uc11c \ubcf4\ub2e4 \uc720\uc5f0\ud558\uace0 \ud655\uc7a5\uc131\uc744 \uac00\uc9c4\ub2e4.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enum class<\/h3>\n\n\n\n<p> \uba3c\uc800 \uac04\ub2e8\ud788 Enum class\ub97c \uc0b4\ud3b4\ubcf4\uc790. enum\uc740 \uac19\uc740 \uce74\ud14c\uace0\ub9ac\uc758 \uc0c1\uc218\ub4e4\uc744 \ub098\uc5f4\ud55c \uac83\uc774\ub2e4. Kotlin \uacf5\uc2dd\uc0ac\uc774\ud2b8\uc758 \uc608\uc81c\ub97c \uac00\uc838\uc624\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>enum class Direction {\n     NORTH, SOUTH, WEST, EAST\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">enum<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Direction<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">     NORTH, SOUTH, WEST, EAST<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uae30\uc874 \uc5b8\uc5b4\ub4e4\uc5d0\uc11c\ub3c4 \uc0ac\uc6a9\ud558\ub294 \uac00\uc7a5 \uac04\ub2e8\ud55c \ud615\ud0dc\uc774\ub2e4. \uc704\uc640\uac19\uc774 \uc0ac\uc6a9\ud558\uba74, \uc2e4\uc81c\ub85c\ub294 Direction \ud0c0\uc785\uc73c\ub85c NORTH, SOUTH\ub4f1 \uac01\uac01 \uc778\uc2a4\ud134\uc2a4\uac00 \uc0dd\uc131\ub41c\ub2e4. \uadf8\ub798\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 when\ubb38\uc73c\ub85c \ucc98\ub9ac\uac00 \uac00\ub2a5\ud558\ub2e4. <\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val direction:Direction = Direction.EAST\nwhen(direction){\n    Direction.NORTH -> println(\"NORTH\")\n    Direction.SOUTH -> println(\"SOUTH\")\n    Direction.WEST -> println(\"WEST\")\n    Direction.EAST -> println(\"EAST\")\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> direction:<\/span><span style=\"color: #F69D50\">Direction<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Direction.EAST<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">when<\/span><span style=\"color: #ADBAC7\">(direction){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    Direction.NORTH <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;NORTH&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    Direction.SOUTH <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;SOUTH&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    Direction.WEST <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;WEST&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    Direction.EAST <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;EAST&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uac01\uac01\uc758 enum \uc778\uc2a4\ud134\uc2a4\ub4e4\uc740 enum class\uc758 \uc778\uc2a4\ud134\uc2a4\ub85c \uac12\uc744 \uac00\uc9c8\uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>enum class Color(val rgb: Int) {\n         RED(0xFF0000),\n         GREEN(0x00FF00),\n         BLUE(0x0000FF) \n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">enum<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Color<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> rgb: <\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #DCBDFB\">RED<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">0xFF0000<\/span><span style=\"color: #ADBAC7\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #DCBDFB\">GREEN<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">0x00FF00<\/span><span style=\"color: #ADBAC7\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">         <\/span><span style=\"color: #DCBDFB\">BLUE<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #6CB6FF\">0x0000FF<\/span><span style=\"color: #ADBAC7\">) <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Color enum class\uc5d0 rgb\uac12\uc744 \ub123\uac8c \ub418\uc5b4\uc788\uace0, \uac01 enum \ud56d\ubaa9\ub4e4\uc774 \uc774\ub97c \ub530\ub77c \ucd08\uae30\uac12\uc744 \ubd80\uc5ec\ud558\uace0 \uc788\ub2e4. \uc774\ub97c \uc0ac\uc6a9\ud558\ub294 \uac74 \ubcf4\ud1b5\uc758 \ud074\ub798\uc2a4\uc640 \uac19\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val color: Color = Color.BLUE\nprintln(\"My color is ${color.rgb}\")<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> color: <\/span><span style=\"color: #F69D50\">Color<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Color.BLUE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;My color is ${color.rgb}&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc790\uc8fc \uc811\ud558\uc9c4 \uc54a\uc558\uc9c0\ub9cc, enum class\uc5d0\ub294 \uc720\uc6a9\ud55c \uba54\uc18c\ub4dc\ub3c4 \uc874\uc7ac\ud55c\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>EnumClass.valueOf(value: String): EnumClass \nEnumClass.values(): Array&lt;EnumClass><\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ADBAC7\">EnumClass.<\/span><span style=\"color: #DCBDFB\">valueOf<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #ADBAC7\">: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">): <\/span><span style=\"color: #F69D50\">EnumClass<\/span><span style=\"color: #ADBAC7\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">EnumClass.<\/span><span style=\"color: #DCBDFB\">values<\/span><span style=\"color: #ADBAC7\">(): <\/span><span style=\"color: #F69D50\">Array<\/span><span style=\"color: #ADBAC7\">&lt;<\/span><span style=\"color: #F69D50\">EnumClass<\/span><span style=\"color: #ADBAC7\">&gt;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p> valueOf()\ub294 \ubb38\uc790\uc5f4\ub85c enum \uac1d\uccb4\ub97c \ucc3e\uc744 \uc218 \uc788\ub2e4. \uc608\ub97c \ub4e4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val color2 = Color.valueOf(\"RED\")\nprintln(\"$color2\")<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> color2 <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> Color.<\/span><span style=\"color: #DCBDFB\">valueOf<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;RED&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #6CB6FF\">$color2<\/span><span style=\"color: #96D0FF\">&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ubcf4\uc5ec\uc8fc\uae30\uc2dd \uc608\uc81c\ub97c \uc4f0\ub2e4\ubcf4\ub2c8 \uc880 \uc5b4\uc0c9\ud55c \ucf54\ub4dc\uac00 \ub410\uc9c0\ub9cc, \uc704\uc640 \uac19\uc774 &#8220;RED&#8221;\ub77c\ub294 \ubb38\uc790\uc5f4\ub85c Color.RED \uac1d\uccb4\ub97c \uac00\uc838\uc624\uace0 \uc788\ub2e4. \ub9cc\uc57d, \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uc774\ub984\uc744 \uc0ac\uc6a9\uc2dc\uc5d0\ub294 IllegalArgumentException\uc774 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n\n\n\n<p>\ub610\ud558\ub098\uc758 \uc720\uc6a9\ud55c \uba54\uc18c\ub4dc\uc778 values()\ub294 enum \ud56d\ubaa9\ub4e4\uc758 Array\ub97c \ubc18\ud658\ud574\uc900\ub2e4. \uc774\ub97c \uc774\uc6a9\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \ucc98\ub9ac\uac00 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>println(\"${ Color.values().forEach { println(it.name) }}\")<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;${ Color.<\/span><span style=\"color: #DCBDFB\">values<\/span><span style=\"color: #96D0FF\">().<\/span><span style=\"color: #DCBDFB\">forEach<\/span><span style=\"color: #96D0FF\"> { <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #96D0FF\">(it.name) }}&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc774\ub807\uac8c \uc4f8\uc77c\uc774 \uc5bc\ub9c8\ub098 \uc788\uc744\uc9c0 \ubaa8\ub974\uaca0\uc9c0\ub9cc, values()\ub85c \ubc1b\uc544\uc628 enum \ubc30\uc5f4\uc744 \ubaa8\ub450 \ucd9c\ub825\ud558\uace0 \uc788\ub2e4. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sealed class<\/h3>\n\n\n\n<p> Sealed class\ub294 \uc6d0\ub798 \ud074\ub798\uc2a4\uc758 \uc0c1\uc18d\uc5d0 \uad00\ub828\ub41c \uc81c\uc57d\uc774\ub2e4. sealed \ub85c \uc120\uc5b8\ub41c \ud074\ub798\uc2a4\ub098 \uc778\ud130\ud398\uc774\uc2a4\ub294 \uac19\uc740 \ud328\ud0a4\uc9c0 \uc548\uc5d0\uc11c \ucef4\ud30c\uc77c \ud0c0\uc784\uc5d0\ub9cc \uc0c1\uc18d\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. \uc77c\ub2e8, sealed class\uac00 \ucef4\ud30c\uc77c \ub418\uba74, \uc678\ubd80\uc5d0\uc120 \uc774\ub97c \uc0c1\uc18d\ud558\uc9c0 \ubabb\ud55c\ub2e4. \uc608\ub97c\ub4e4\uc5b4 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ub9cc\ub4e4\ub418, \uc774 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0\uc11c \ud074\ub798\uc2a4\ub97c \uc0c1\uc18d\ubc1b\uc544 \uc0ac\uc6a9\ud558\ub294\uac78 \ub9c9\uace0\uc2f6\ub2e4\uba74, sealed class\ub97c \uc0ac\uc6a9\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<p> <strong><span class=\"has-inline-color has-vivid-red-color\">sealed class\uac00 \ucef4\ud30c\uc77c\ud0c0\uc784\uc5d0 \uc0c1\uc18d\uc744 \ubaa8\ub450 \uacb0\uc815\ud55c\ub2e4\ub294 \uc0ac\uc2e4 \ub54c\ubb38\uc5d0, \ud765\ubbf8\ub86d\uac8c\ub3c4 enum\uc744 \ub300\uccb4\ud558\uc5ec \uc0ac\uc6a9\uac00\ub2a5\ud558\ub2e4. \ucef4\ud30c\uc77c \ud0c0\uc784\uc5d0 \uc0c1\uc18d\ubc1b\uc740 \ud0c0\uc785\ub4e4\uc774 \ud655\uc815\ub418\ubbc0\ub85c, Kotlin\uc5d0\uc11c\ub294 when\ubb38\uc5d0\uc11c sealed class\uc758 \uc11c\ube0c\ud074\ub798\uc2a4 \ud0c0\uc785\uc744 \ud5c8\uc6a9\ud558\uae30 \ub54c\ubb38\uc774\ub2e4.<\/span><\/strong> <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\uc7a0\uae50 \ud22c\ub35c\ub300\uc790\uba74, \ud504\ub85c\uadf8\ub798\ubc0d \uad00\ub828\ud574\uc11c \uad6c\uae00\ub9c1\uc744 \ud588\uc744 \ub54c \uc218 \ub9ce\uc740 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud2b8\ub4e4\uc744 \ub9cc\ub098\uc9c0\ub9cc, \ub300\ubd80\ubd84\uc758 \ud55c\uae00 \ud3ec\uc2a4\ud305\ub4e4\uc774 \ud06c\uac8c \ub3c4\uc6c0\uc774 \uc548\ub41c\ub2e4. \uc774\uac78 \uc815\ub9ac\ud558\uba74\uc11c\ub3c4 &#8216;\uadfc\ub370, \uc65c sealed class\ub85c enum\uc744 \ub300\uccb4\ud558\ub294\uac70\uc9c0?&#8217;\ub780 \uadfc\ubcf8\uc801\uc778 \uc758\ubb38\uc774 \ub4e4\uc5c8\ub294\ub370, \ud55c\uae00 \ube14\ub85c\uadf8\ub4e4\uc740 \uc774\ud574\ub97c \ud558\uace0 \uc801\uc740\uac74\uc9c0 \ud53c\uc0c1\uc801\uc778 \ub0b4\uc6a9\ub9cc \uc601\uc5b4\uc6d0\ubb38\uc5d0\uc11c \ub530\uc628\ub290\ub08c\uc774 \ub9ce\uc558\ub2e4. \uadf8\ub0e5 \uadf8\ub807\ub2e4\uace0 \uc544\uc27d\ub2e4\uace0. \uc704\uc640 \uac19\uc740 \uae30\ubcf8\uc801\uc778 \ub0b4\uc6a9\uc744 \ub531 \uc54c\ub824\uc8fc\ub294 \uae00\uc774 \uc798 \uc548\ubcf4\uc5ec\uc11c \ub9d0\uc774\uc9c0.<\/p>\n<\/blockquote>\n\n\n\n<p>\uba3c\uc800 \uc55e\uc5d0\uc11c \uc0b4\ud3b4\ubcf8 enum\uacfc \ub3d9\uc77c\ud55c \uad6c\ud604\uc744 \ud574\ubcf4\uc790. <\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sealed class Color(val rgb: Int){\n    object RED: Color(0xFF0000)\n    object GREEN: Color(0x00FF00)\n    object BLUE: Color(0x0000FF)\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">sealed<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Color<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> rgb: <\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\">){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">object<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">RED<\/span><span style=\"color: #ADBAC7\">: <\/span><span style=\"color: #F69D50\">Color<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F69D50\">0xFF0000<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">object<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">GREEN<\/span><span style=\"color: #ADBAC7\">: <\/span><span style=\"color: #F69D50\">Color<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F69D50\">0x00FF00<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">object<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">BLUE<\/span><span style=\"color: #ADBAC7\">: <\/span><span style=\"color: #F69D50\">Color<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F69D50\">0x0000FF<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>sealed class\uc758 nested \ud615\ud0dc\ub85c object\ub4e4\uc744 \uc815\uc758\ud588\ub2e4. \uc55e\uc11c, enum \ud56d\ubaa9\uc774 \uac01\uac01 \uac1d\uccb4\uc784\uc744 \uc598\uae30\ud588\uc5c8\ub2e4. \uadf8\uc640 \ub3d9\uc77c\ud558\uac8c object\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc704\uc640\uac19\uc774 \uc815\uc758\uac00 \uac00\ub2a5\ud558\ub2e4. \ub2e4\ub9cc enum\uc5d0 \uc788\ub294 valueOf()\ub098 values() \uba54\uc18c\ub4dc\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0, \uc774\ub97c \uc81c\uc678\ud558\uace4 \ub3d9\uc77c\ud558\uac8c \uc0ac\uc6a9\uac00\ub2a5\ud558\ub2e4. <\/p>\n\n\n\n<p>sealed class\ub294 \uc0c1\uc18d\uc744 \uc774\uc6a9\ud558\ub294 \uac83\uc774\uae30 \ub54c\ubb38\uc5d0, \uc77c\ubc18\uc801\uc778 class\ub098 data class\ub3c4 \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud558\ub2e4. \uc774 \ubd80\ubd84\uc774 enum class\uc640\uc758 \uacb0\uc815\uc801\uc778 \ucc28\uc774\uc810\uc778\ub370, enum class\uac00 \uc0c1\uc218\ub4e4\uc758 \ub098\uc5f4\uc5d0 \uc801\ud569\ud558\ub2e4\uba74, sealed class\ub294 class\ub4e4\uc744 \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uac19\uc740 \uce74\ud14c\uace0\ub9ac \ud0c0\uc785\ub4e4\uc758 \ub098\uc5f4\uc5d0 \uc801\ud569\ud558\ub2e4. \uc608\ub97c\ub4e4\uba74, \ub2e8\uc21c\ud55c \ucf54\ub4dc\uac12\uc678\uc5d0 \uc5ec\ub7ec \uc815\ubcf4\ub97c \ud3ec\ud568\ud558\ub294 \uc5d0\ub7ec\ucf54\ub4dc\ub77c\ub358\uc9c0, \ucd94\uac00\uc801\uc778 \uc815\ubcf4\ub4e4\uc744 \uac16\ub294 state \uba38\uc2e0\uc758 \uc0c1\ud0dc\ub4e4\uc774 \uc788\ub2e4. <\/p>\n\n\n\n<p> enum class\uc640 sealed class\uc758 \ucc28\uc774\uc810\uc744 \ud56d\ubaa9\ubcc4\ub85c \uc798 \uc815\ub9ac\ud55c \uc2a4\ud0dd\uc624\ubc84\ud50c\ub85c\uc6b0 \uae00\uc774 \uc788\ub2e4. \ud55c \ubc88 \uc0b4\ud3b4\ubd10\ub3c4 \uc88b\uc744\ub4ef. <a href=\"https:\/\/stackoverflow.com\/questions\/49169086\/sealed-class-vs-enum-when-using-associated-type\">Sealed class vs Enum Stackoverflow \ucc38\uc870<\/a>. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sealed class vs Enum class<\/h3>\n\n\n\n<p> \uc5ec\uae30\uc11c\ubd80\ud130\ub294 \uc5b8\uae09\ud55c \uc2a4\ud0dd \uc624\ubc84\ud50c\ub85c\uc6b0\uc758 \uc608\uc81c\ub4e4\uc744 \uc774\uc6a9\ud560 \uac83\uc774\ub2e4. \ub0b4\uac00 \uc0c8\ub85c \ub9cc\ub4e4\uace0 \uc815\ub9ac\ud558\uae30\uc5d4 \uc2dc\uac04\uc774 \ub9ce\uc774 \ub4dc\ub2c8\uae4c \u314b\u314b <strong>\uc5b4\uca0c\ub4e0, \ud575\uc2ec\uc740 enum\uc740 \uc0c1\uc218 \uac1d\uccb4\ub4e4\uc774\uace0, sealed class\ub294 object\ub97c \uc0ac\uc6a9\ud558\uba74 enum\uacfc \ub3d9\uc77c\ud558\uc9c0\ub9cc, subclass\ub4e4\uc774 \uac00\ub2a5\ud558\ub2e4\ub294 \uc810. \uc774\ub85c\uc11c \ubcf4\ub2e4 \uc720\uc5f0\ud558\uace0 \ud655\uc7a5\uc131\uc774 \uc0dd\uae34\ub2e4\ub294 \ubd80\ubd84\uc774\ub2e4.<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Properties &amp; Functions<\/h4>\n\n\n\n<p>enum\uc740 \ud074\ub798\uc2a4\uc5d0 \uc815\uc758\ub41c \uacf5\ud1b5 property\ub9cc \uac00\ub2a5\ud558\ub2e4. \ubc18\uba74\uc5d0 sealed class\ub294 \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uba74 \uc81c\uac01\uac01 \ub2e4\ub978 property\ub97c \uac00\uc9c8 \uc218\ub3c4 \uc788\ub2e4. \uc774\ub294 function\uc5d0 \ub300\ud574\uc11c\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\ub2e4. \uc2a4\ud0dd \uc624\ubc84\ud50c\ub85c\uc6b0\uc758 \uc608\uc81c\ub97c \uac00\uc838\uc640\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sealed class DeliveryStatus{\n    class Preparing() : DeliveryStatus(){\n        fun cancelOrder() = println(\"Cancelled.\")\n    }\n    class Dispatched(val trackingId: String) : DeliveryStatus(){\n        fun rejectDelivery() = println(\"Delivery rejected.\")\n    }\n    class Delivered(val trackingId: String, val receiversName: String) : DeliveryStatus(){\n        fun returnItem() = println(\"Return initiated.\")\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">sealed<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Preparing<\/span><span style=\"color: #ADBAC7\">() : <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Cancelled.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Dispatched<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> trackingId: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">) : <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">rejectDelivery<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Delivery rejected.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Delivered<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> trackingId: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> receiversName: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">) : <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">returnItem<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Return initiated.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uac01\uac01 \uc790\uc2e0\ub9cc\uc758 property\ub4e4\uc744 \uac00\uc9c0\uba70, \uc790\uc2e0\ub9cc\uc758 \ud568\uc218\ub4e4\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\ub2e4. \uc774 \uacbd\uc6b0, \ub2e4\uc74c\uacfc\uac19\uc774 when\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec \ucc98\ub9ac\uac00 \uac00\ub2a5\ud558\ub2e4. <\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>class DeliveryManager {\n    fun cancelOrder(status: DeliveryStatus) = when(status) {\n        is DeliveryStatus.Preparing -> status.cancelOrder()\n        is DeliveryStatus.Dispatched -> status.rejectDelivery()\n        is DeliveryStatus.Delivered -> status.returnItem()\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">DeliveryManager<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">(status: <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">) <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">when<\/span><span style=\"color: #ADBAC7\">(status) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> DeliveryStatus.Preparing <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> status.<\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> DeliveryStatus.Dispatched <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> status.<\/span><span style=\"color: #DCBDFB\">rejectDelivery<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">is<\/span><span style=\"color: #ADBAC7\"> DeliveryStatus.Delivered <\/span><span style=\"color: #F47067\">-&gt;<\/span><span style=\"color: #ADBAC7\"> status.<\/span><span style=\"color: #DCBDFB\">returnItem<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>enum\uacfc \ub2ec\ub77c\uc9c4\uc810\uc740 \ud074\ub798\uc2a4 \ud0c0\uc785\uc744 \uccb4\ud06c\ud574\uc57c\ud558\uae30 \ub54c\ubb38\uc5d0, &#8216;is&#8217;\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\ub2e4. <\/p>\n\n\n\n<p>\uc704\uc758 \uc608\uc81c\uc5d0\uc11c \uc774\ub807\uac8c \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud55c\uac78 \ubcf4\uc5ec\uc8fc\uae30\uc704\ud574 \uc81c\uac01\uac01 \ub2e4\ub978 \ud568\uc218\ub97c \uc0ac\uc6a9\ud588\uc9c0\ub9cc, \ubc30\ub2ec \uc0c1\ud0dc\uac00 \uc5b4\ub5bb\ub4e0, \ub3d9\uc77c\ud55c cancelOrder() \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc4f0\ub294\uac8c \ub9de\uc744 \uac83\uc774\ub2e4. sealed class\ub294 abstract class\uc774\ubbc0\ub85c abstract \uba64\ubc84\ub4e4\ub3c4 \uac00\uc9c8 \uc218 \uc788\ub2e4. \uc774\ub97c \uc774\uc6a9\ud558\uc5ec \uc704\uc758 \ucf54\ub4dc\ub97c \uace0\uccd0\ubcf4\uc790.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sealed class DeliveryStatus{\n    abstract fun cancelOrder()\n    class Preparing() : DeliveryStatus(){\n        override fun cancelOrder() = println(\"Cancelled.\")\n    }\n    class Dispatched(val trackingId: String) : DeliveryStatus(){\n        fun rejectDelivery() = println(\"Delivery rejected.\")\n        override fun cancelOrder() {\n            rejectDelivery()\n        }\n    }\n    class Delivered(val trackingId: String, val receiversName: String) : DeliveryStatus(){\n        fun returnItem() = println(\"Return initiated.\")\n        override fun cancelOrder() {\n            returnItem()\n        }\n    }\n}\nclass DeliveryManager {\n    fun cancelOrder(status: DeliveryStatus) = status.cancelOrder()\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">sealed<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">abstract<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Preparing<\/span><span style=\"color: #ADBAC7\">() : <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">override<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Cancelled.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Dispatched<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> trackingId: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">) : <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">rejectDelivery<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Delivery rejected.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">override<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #DCBDFB\">rejectDelivery<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Delivered<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> trackingId: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> receiversName: <\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">) : <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">(){<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">returnItem<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">println<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Return initiated.&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">override<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            <\/span><span style=\"color: #DCBDFB\">returnItem<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">DeliveryManager<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">fun<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">(status: <\/span><span style=\"color: #F69D50\">DeliveryStatus<\/span><span style=\"color: #ADBAC7\">) <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> status.<\/span><span style=\"color: #DCBDFB\">cancelOrder<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>sealed class\uc5d0 abstract \ud568\uc218\ub97c \uc120\uc5b8\ud558\uace0, \uac01 \uc11c\ube0c\ud074\ub798\uc2a4\uc5d0\uc11c \ud574\ub2f9 \ud568\uc218\ub97c \uc624\ubc84\ub77c\uc774\ub529 \ud558\ub294\uac78 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Inheritance<\/h4>\n\n\n\n<p>enum \uac12\ub4e4\uc740 \uac1d\uccb4\uc774\uae30 \ub54c\ubb38\uc5d0 \uc0c1\uc18d\uc774 \ubd88\uac00\ub2a5\ud558\ub2e4. enum class\ub3c4 \uba85\uc2dc\ub418\uc9c4 \uc54a\uc9c0\ub9cc final \ud074\ub798\uc2a4\ub85c \uc0c1\uc18d\uc774 \ubd88\uac00\ub2a5\ud558\ub2e4. sealed class\ub098 subclass\ub4e4\uc740 \ubb50 \ub2f9\uc5f0\ud788 \uc0c1\uc18d\uc774 \uac00\ub2a5\ud558\ub2e4. \ub2e4\ub9cc, \uc774\ub807\uac8c \uc0ac\uc6a9\ud558\ub294 \uc2e4\uc6a9\uc801\uc778 \uc608\ub294 \uc870\uae08 \ub354 \uc0dd\uac01\ud574\ubd10\uc57c \ud560\uac70 \uac19\uc544\uc11c \uc608\uc81c\ub294 \uc2a4\ud0b5. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Number of Instances<\/h4>\n\n\n\n<p>enum\uc740 \uac01\uac01 \uac1d\uccb4\uc774\ubbc0\ub85c singleton\uc73c\ub85c \uc0dd\uac01\ud560 \uc218 \uc788\uc73c\uba70 \uc5ec\ub7ec \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud558\uc9c0 \ubabb\ud55c\ub2e4. \ubc18\uba74, sealed class\uc758 \uc11c\ube0c\ud074\ub798\uc2a4\ub4e4\uc740 \ud074\ub798\uc2a4\uc774\ubbc0\ub85c \ub2f9\uc5f0\ud788 \uc778\uc2a4\ud134\uc2a4\ub97c \uc5ec\ub7ec\uac1c \uc0dd\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-Roboto-Mono.ttf\" style=\"font-size:clamp(14px, .875rem, 21px);font-family:Code-Pro-Roboto-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#adbac7;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:clamp(20px, 1.25rem, 30px);--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#22272e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#adbac7;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>val dispatched1 = DeliveryStatus.Dispatched(\"23451\")\nval dispatched2 = DeliveryStatus.Dispatched(\"546788\")<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark-dimmed\" style=\"background-color: #22272e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> dispatched1 <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> DeliveryStatus.<\/span><span style=\"color: #DCBDFB\">Dispatched<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;23451&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> dispatched2 <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> DeliveryStatus.<\/span><span style=\"color: #DCBDFB\">Dispatched<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;546788&quot;<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\uc55e\uc758 \uc608\uc5d0\uc11c Dispatched \ud074\ub798\uc2a4\ub85c\ubd80\ud130 \ub2e4\ub978\uac12\uc758 id\ub97c \uac16\ub294 \uac1d\uccb4\ub97c \ub450 \uac1c \uc0dd\uc131\ud558\uace0 \uc788\ub2e4. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Serializable and Comparable<\/h4>\n\n\n\n<p>\uc544\ub9c8\ub3c4 sealed class\uc758 \uc720\uc77c\ud55c \uc57d\uc810\uc77c\uac70 \uac19\ub2e4. Kotlin\uc758 enum class\ub294 java.lang.Enum\uc73c\ub85c\ubd80\ud130 \uc654\ub2e4. \uadf8\ub798\uc11c \ubaa8\ub4e0 enum \uac12\ub4e4\uc5d0 equals(), toString(), hashCode(), Serializable, Comparable\uc774 \uad6c\ud604\ub418\uc5b4 \uc788\ub2e4. sealed class\uc5d0\uc11c\ub294 \uc9c1\uc811 \uad6c\ud604\ud574\uc57c\ud55c\ub2e4.<\/p>\n\n\n\n<p>\ub108\ubb34 \ub099\uc2ec\ud560 \ud544\uc694\ub294 \uc5c6\ub294\uac8c, subclass\ub85c data class\ub97c \uc0ac\uc6a9\ud558\uba74 equals(), toString(), hashcode()\ub294 \uc790\ub3d9\uc73c\ub85c \ub530\ub77c\uc628\ub2e4. \uadf8\ub798\ub3c4 Serializable\uacfc Comparable\uc740 \ub530\ub85c \uad6c\ud604\ud574\uc57c \ud55c\ub2e4. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"57\" src=\"http:\/\/batmask.dothome.co.kr\/wordpress\/wp-content\/uploads\/2020\/04\/seperator.png\" alt=\"seperator\" class=\"wp-image-381\" srcset=\"http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator.png 771w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator-300x22.png 300w, http:\/\/batmask.net\/wordpress\/wp-content\/uploads\/2020\/04\/seperator-768x57.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Conclusion<\/h3>\n\n\n\n<p> \ub808\ud37c\ub7f0\uc2a4\uc5d0\uc11c\ub294 \uc131\ub2a5\uc5d0 \ub300\ud55c \uc5b8\uae09\ub3c4 \uc788\uae34\ud55c\ub370, \uadf8\ub2e5 \uc2e0\uacbd\uc4f8\ub9cc\ud55c \ubd80\ubd84\uc740 \uc544\ub2cc\uac70\uac19\ub2e4. \uc774 \ud3ec\uc2a4\ud305\uc744 \uc815\ub9ac\ud558\uba74\uc11c \ud655\uc2e4\ud574\uc804\uac74, <strong><span class=\"has-inline-color has-vivid-red-color\">\uc0c1\uc218\ub4e4\uc758 \ub098\uc5f4\uc5d0\ub294 enum class\ub97c \uc0ac\uc6a9\ud558\uace0, type\ub4e4\uc744 \uad6c\ubd84\ud574\uc57c \ud55c\ub2e4\uba74 sealed class\ub97c \uc0ac\uc6a9\ud558\uba74 \ub41c\ub2e4\ub294 \uc810\uc774\ub2e4<\/span><\/strong>. \uc0c1\uc218\ub4e4\uc758 \uc0ac\uc6a9\uc5d0 \uad73\uc774 sealed class\ub97c \uc0ac\uc6a9\ud574\uc11c \uc624\ubc84\ud5e4\ub4dc\ub97c \ubc1c\uc0dd\uc2dc\ud0ac \ud544\uc694\uac00 \uc5c6\uace0, state machine\uc758 \uc0c1\ud0dc, \uc815\ubcf4\ub97c \ub9ce\uc774 \ud3ec\ud568\ud558\ub294 \uc5d0\ub7ec\ub4e4\uc758 \ucc98\ub9ac\ub4f1\uc5d0\uc120 sealed class\ub97c \uc0ac\uc6a9\ud558\ub294\uac8c \uc5ec\ub7ec\ubaa8\ub85c \uc720\ub9ac\ud558\ub2e4. \uc2e4\uc0ac\uc6a9\uc5d0\uc11c sealed class\uac00 enum\uc758 \ud615\ud0dc\ub85c \ub9ce\uc774 \uc0ac\uc6a9\ub418\uace0 \uc788\uc73c\ub2c8 \ub3c4\uc6c0\uc774 \ub418\uae38. \uc5ec\uae30\uae4c\uc9c0.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ub2e4\uc218\uc758 \ucf54\ub4dc\uc5d0\uc11c Enum \uc5ed\ud560\uc744 \ud558\ub294 \uacf3\uc5d0 Sealed class\ub97c \uc0ac\uc6a9\ud558\ub294\uac78 \ubcf4\uac8c \ub410\uace0, \ud55c \ubc88 \uc815\ub9ac\ud558\uace0 \ub118\uc5b4\uac08 \ud544\uc694\uc131\uc744 \ub290\uaf08\ub2e4. \uac04\ub2e8\ud558\uac8c \uc598\uae30\ud558\uc790\uba74, Sealed class\ub294 enum class\ucc98\ub7fc \ub3d9\uc77c\ud558\uac8c \uc0ac\uc6a9\uac00\ub2a5\ud558\uba74\uc11c \ubcf4\ub2e4 \uc720\uc5f0\ud558\uace0 \ud655\uc7a5\uc131\uc744 \uac00\uc9c4\ub2e4. Enum class \uba3c\uc800 \uac04\ub2e8\ud788 Enum class\ub97c \uc0b4\ud3b4\ubcf4\uc790. enum\uc740 \uac19\uc740 \uce74\ud14c\uace0\ub9ac\uc758 \uc0c1\uc218\ub4e4\uc744 \ub098\uc5f4\ud55c \uac83\uc774\ub2e4. Kotlin \uacf5\uc2dd\uc0ac\uc774\ud2b8\uc758 \uc608\uc81c\ub97c \uac00\uc838\uc624\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ud55c\ub2e4. \uae30\uc874 <a href=\"http:\/\/batmask.net\/index.php\/2021\/06\/29\/869\/\" class=\"btn btn-link continue-link\">\ub354 \uc77d\uae30<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,34],"tags":[186,223,224,38,222],"class_list":["post-869","post","type-post","status-publish","format-standard","hentry","category-android","category-kotlin","tag-android-2","tag-enum","tag-enum-class","tag-kotlin","tag-sealed-class"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/comments?post=869"}],"version-history":[{"count":25,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/869\/revisions"}],"predecessor-version":[{"id":3506,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/869\/revisions\/3506"}],"wp:attachment":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/media?parent=869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/categories?post=869"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/tags?post=869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}