{"id":490,"date":"2020-05-01T00:52:17","date_gmt":"2020-04-30T15:52:17","guid":{"rendered":"http:\/\/batmask.dothome.co.kr\/?p=490"},"modified":"2026-04-28T17:05:39","modified_gmt":"2026-04-28T08:05:39","slug":"oop-property","status":"publish","type":"post","link":"http:\/\/batmask.net\/index.php\/2020\/05\/01\/490\/","title":{"rendered":"OOP: property"},"content":{"rendered":"\n<p>Kotlin\uc744 \ubcf4\ub2e4\uac00 backing field\ub97c \uc811\ud558\uba70, \uc774\uac8c \ubb54\uac00\uc2f6\uc5c8\ub294\ub370 \ub2e4\ub978 \uc5b8\uc5b4\ub4e4\ub3c4 \ub2e4 \uc9c0\uc6d0\ud558\ub294 property\uc5d0 \ub300\ud55c \ub0b4\uc6a9\uc774\uc5c8\ub2e4. \uadf8\ub3d9\uc548 \uc194\uc9c1\ud788 member variable\uacfc property\uc5d0 \ub300\ud55c \uac1c\ub150\uc774 \ub530\ub85c \uc5c6\uc5c8\uc74c. \uc544&#8230; \ubd80\ub044\ub7fd\ub124. \uc544\ubb4f\ud2bc \uc815\ub9ac\ud574\ubcf4\ub3c4\ub85d \ud55c\ub2e4.<\/p>\n\n\n\n<p>property\ub294 \uac04\ub2e8\ud788 \ub9d0\ud574, member variable\uc5d0 \ub300\ud55c encapsulation\uc774\ub77c\uace0 \ud560 \uc218 \uc788\ub2e4. \ud074\ub798\uc2a4\ub97c \uc791\uc131\ud560 \ub54c, \uac12\uc744 \uc800\uc7a5\ud560 \ubcc0\uc218\ub97c \ub9cc\ub4e4\uace0 \uc758\uc2dd\uc801\uc73c\ub85c getter, setter\ub97c \ub9cc\ub4e4\uc5b4 \uc8fc\uace0 \uc788\uc5c8\uc9c0\ub9cc, \uc774\ub97c \uc5b8\uc5b4 \ub808\ubca8\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294\uac8c property\uc774\ub2e4. member variable\uc5d0 \ub300\ud55c \uc77c\uc885\uc758 proxy\ub77c\uace0\ub3c4 \ud560 \uc218 \uc788\uaca0\ub2e4. <\/p>\n\n\n\n<p>\uba54\uc18c\ub4dc\ub4e4\uc758 \uc0c1\uc18d\uc740 \ub531\ud788 \ud5f7\uac08\ub9b4 \ubd80\ubd84\uc774 \uc5c6\ub294\ub370, member variable\uacfc property\ub294 \uc880 \ud5f7\uac08\ub9b0\ub2e4. \ub300\ub2e8\ud55c\uac74 \uc5c6\uace0, property\ub294 getter\/setter\ub85c \uc774\ub8e8\uc5b4\uc9c4 \uba54\uc18c\ub4dc\ub85c \uc0dd\uac01\ud558\uba74 \ub2e8\uc21c\ud574\uc9c4\ub2e4. \uc774\uc81c, \uc5b8\uc5b4\ubcc4 \uc0ac\uc6a9\ubc95\uc744 \uc54c\uc544\ubcf4\uc790.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Kotlin<\/h3>\n\n\n\n<p> \ucf54\ud2c0\ub9b0\uc5d0\uc120 var, val\ub4f1\uc73c\ub85c \ud074\ub798\uc2a4 \ubcc0\uc218\ub97c \ub9cc\ub4e4\uba74 \uc790\ub3d9\uc73c\ub85c default getter\/setter(\uc774\ud6c4\ub85c accessor\ub85c \ud45c\uae30)\uac00 \uc4f0\uc778 property\uac00 \uc0ac\uc6a9\ub41c\ub2e4. \uadf8\ub798\uc11c \ubcf4\ud1b5\uc758 \uacbd\uc6b0\uc5d0\ub294 backing field\ub97c \uace0\ub824\ud560 \ud544\uc694\uac00 \uc5c6\ub2e4. \ud2b9\ubcc4\ud788 accessor\uac00 \ud544\uc694\ud55c \uacbd\uc6b0\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ud55c\ub2e4. (<a href=\"https:\/\/kotlinlang.org\/docs\/reference\/properties.html\">\ucf54\ud2c0\ub9b0 \uacf5\uc2dd\ubb38\uc11c \ucc38\uc870<\/a>)<\/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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">Kotlin<\/span><\/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>var stringRepresentation: String\n    get() = this.toString()\n    set(value) {\n        setDataFromString(value) \/\/ parses the string and assigns values to other properties\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\">var<\/span><span style=\"color: #ADBAC7\"> stringRepresentation: <\/span><span style=\"color: #F69D50\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">get<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">this<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">toString<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">setDataFromString<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #ADBAC7\">) <\/span><span style=\"color: #768390\">\/\/ parses the string and assigns values to other properties<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc5d0\uc11c single line function\uc740 \uc911\uad04\ud638\uc5c6\uc774 &#8216;=&#8217;\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc6a9\uac00\ub2a5\ud558\ub2e4. accessor\ub97c \uc0ac\uc6a9\ud560 \ub54c, \uc8fc\uc758\ud560\uc810\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc368\uc11c\ub294 \uc548\ub41c\ub2e4\ub294 \uc0ac\uc2e4\uc774\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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">Kotlin<\/span><\/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>var name: String\nset(value) {\n    name = value\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\">var<\/span><span style=\"color: #ADBAC7\"> name: <\/span><span style=\"color: #F69D50\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    name <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>set() \ub0b4\uc758 name = value\uac00 \ub2e4\uc2dc set()\uc744 \ud638\ucd9c\ud558\uac8c\ub418\uc5b4 \ubb34\ud55c \uc7ac\uadc0\ud638\ucd9c\uc774 \ubc1c\uc0dd\ud55c\ub2e4. \uc774\ub807\uac8c \uc4f0\uace0\uc790 \ud560\ub54c\ub294 backing field\uc5d0 \uc9c1\uc811 \uac12\uc744 \ud560\ub2f9\ud574\uc57c \ud558\ub294\ub370, backing field\ub97c \uc9c1\uc811 \uc4f0\ub824\uba74 property \uc774\ub984\uc744 \uc4f0\uc9c0\ub9d0\uace0 &#8216;field&#8217; \ud0a4\uc6cc\ub4dc\ub97c \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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">Kotlin<\/span><\/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>var name: String\nset(value) {\n    field = value\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\">var<\/span><span style=\"color: #ADBAC7\"> name: <\/span><span style=\"color: #F69D50\">String<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">field<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>field \ud0a4\uc6cc\ub4dc \ub9cc\uc73c\ub85c\ub294 \ud45c\ud604\uc774 \ubd88\uac00\ub2a5\ud560 \ub54c, Java\uc5d0\uc11c \uc4f0\ub4ef\uc774 backing property\ub97c \uc0ac\uc6a9\ud558\uba74 \ub41c\ub2e4. private property\ub97c \ub9cc\ub4e4\uace0, \uac19\uc740 \uc774\ub984\uc73c\ub85c \ud558\ub418, \uc774\ub984\uc55e\uc5d0\ub294 &#8216;_'(underscore)\ub97c \ubd99\uc5ec \uc0ac\uc6a9\ud55c\ub2e4.  accessor\ub294 \uc774 private property\ub97c \uc9c1\uc811 \ub2e4\ub8ec\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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">Kotlin<\/span><\/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>private var _table: Map&lt;String, Int>? = null\npublic val table: Map&lt;String, Int>\n    get() {\n        if (_table == null) {\n            _table = HashMap() \/\/ Type parameters are inferred\n        }\n        return _table ?: throw AssertionError(\"Set to null by another thread\")\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\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">var<\/span><span style=\"color: #ADBAC7\"> _table: <\/span><span style=\"color: #F69D50\">Map<\/span><span style=\"color: #ADBAC7\">&lt;<\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\">&gt;? <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> table: <\/span><span style=\"color: #F69D50\">Map<\/span><span style=\"color: #ADBAC7\">&lt;<\/span><span style=\"color: #F69D50\">String<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">get<\/span><span style=\"color: #ADBAC7\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (_table <\/span><span style=\"color: #F47067\">==<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">null<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            _table <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">HashMap<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #768390\">\/\/ Type parameters are inferred<\/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\">return<\/span><span style=\"color: #ADBAC7\"> _table ?: <\/span><span style=\"color: #F47067\">throw<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">AssertionError<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #96D0FF\">&quot;Set to null by another thread&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>property\uc758 \uc0c1\uc18d\uc740 method\uc640 \ub3d9\uc77c\ud558\uac8c &#8216;open&#8217;, &#8216;override&#8217; \ud0a4\uc6cc\ub4dc\ub85c \uac00\ub2a5\ud558\ub2e4. \ub9cc\uc57d read-only\ub85c \uc4f0\uace0\uc790 \ud558\uba74, C#\uac19\uc740 \uacf3\uc5d0\uc11c\ub294 get\/set \uc911 \ud558\ub098\ub9cc \uc4f0\uac70\ub098 private\uac19\uc740 access modifier\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc81c\uc5b4\ud558\uc9c0\ub9cc, Kotlin\uc5d0\uc11c\ub294 val\ub85c \uc815\uc758\ud55c\ub2e4. \ucd08\uae30\ud654 \uc774\ud6c4\uc5d0\ub294 \uc77d\uc744\uc218 \uc788\uc5b4 read-only property\uac00 \ub41c\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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">Kotlin<\/span><\/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>open class Shape {\n    open val vertexCount: Int = 0\n}\n\nclass Rectangle : Shape() {\n    override val vertexCount = 4\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\">open<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Shape<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">open<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">val<\/span><span style=\"color: #ADBAC7\"> vertexCount: <\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Rectangle<\/span><span style=\"color: #ADBAC7\"> : <\/span><span style=\"color: #F69D50\">Shape<\/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\">val<\/span><span style=\"color: #ADBAC7\"> vertexCount <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>property\ub97c override\ud558\uac8c\ub418\uba74 \ub2e4\ub978 override\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c, subclass\uc5d0 \uc0c8\ub85c\uc6b4 backing field\uac00 \uc0dd\uc131\ub41c\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0 subclass\uc758 property\uac12\uc744 \ubcc0\uacbd\ud574\ub3c4 superclass\ub294 \ubcc0\ud654\uac00 \uc5c6\uac8c\ub41c\ub2e4.<br>  override\ud558\uc9c0\ub9cc, super class\uc758 backing field\ub97c \uacf5\uc720\ud558\uace0 \uc2f6\uc73c\uba74, \ub2e4\uc74c\uacfc \uac19\uc774 accessor\ub97c \ub9cc\ub4e4\uc5b4\uc900\ub2e4.( <a href=\"https:\/\/stackoverflow.com\/questions\/51705425\/kotlin-override-setter\">\uc2a4\ud0dd \uc624\ubc84\ud50c\ub85c\uc6b0 \uad00\ub828 \uc9c8\uc758 \ucc38\uc870 <\/a>)<\/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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">Kotlin<\/span><\/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>open var items: List&lt;I> = listOf()\n    set(value) {\n        field = value\n        onDataChanged()\n    }\n\noverride var items: List&lt;Int>\n    get() = super.items\n    set(value) {\n        super.items = value\n        \/\/Your code\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\">open<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">var<\/span><span style=\"color: #ADBAC7\"> items: <\/span><span style=\"color: #F69D50\">List<\/span><span style=\"color: #ADBAC7\">&lt;<\/span><span style=\"color: #F69D50\">I<\/span><span style=\"color: #ADBAC7\">&gt; <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">listOf<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">field<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #DCBDFB\">onDataChanged<\/span><span style=\"color: #ADBAC7\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">override<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">var<\/span><span style=\"color: #ADBAC7\"> items: <\/span><span style=\"color: #F69D50\">List<\/span><span style=\"color: #ADBAC7\">&lt;<\/span><span style=\"color: #F69D50\">Int<\/span><span style=\"color: #ADBAC7\">&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">get<\/span><span style=\"color: #ADBAC7\">() <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">super<\/span><span style=\"color: #ADBAC7\">.items<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">value<\/span><span style=\"color: #ADBAC7\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">super<\/span><span style=\"color: #ADBAC7\">.items <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #768390\">\/\/Your code<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>sub class\uc758 accessor\uac00 super class\uc758 property\ub97c \uc0ac\uc6a9\ud558\ubbc0\ub85c \ubcc4\uac1c\uc758 backing field\uac00 \uc0dd\uc131\ub418\uc9c0 \uc54a\ub294\ub2e4\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">C#<\/h3>\n\n\n\n<p>C#\uc5d0\uc11c\ub294 accessor\ub97c \uba85\uc2dc\ud574\uc918\uc57c property\ub85c \uc0ac\uc6a9\ub41c\ub2e4. Kotlin\ucc98\ub7fc \uc790\ub3d9\uc0dd\uc131\ub418\ub294 backing field\ub97c \uc4f0\ub294 \uac00\uc7a5 \ub2e8\uc21c\ud55c \ubc29\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4. ( <a href=\"https:\/\/docs.microsoft.com\/ko-kr\/dotnet\/csharp\/programming-guide\/classes-and-structs\/properties\">MS \uacf5\uc2dd \ubb38\uc11c \ucc38\uc870<\/a> )<\/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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">C#<\/span><\/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>public string Name\n   { get; set; }\n\npublic decimal Price\n   { get; set; }<\/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\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> Name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   { get; set; }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">decimal<\/span><span style=\"color: #ADBAC7\"> Price<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   { get; set; }<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>body\ub97c \uac16\ub294 accessor\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\uace0\uc790 \ud558\ub294 \uacbd\uc6b0\ub294 Kotlin\ud558\uace0 \ube44\uc2b7\ud55c\ub370, property \uc790\uccb4\uac00 \uc911\uad04\ud638 \ube14\ub7ed\uc744 \uac16\ub294\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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">C#<\/span><\/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>using System;\n\nclass TimePeriod\n{\n   private double _seconds;\n\n   public double Hours\n   {\n       get { return _seconds \/ 3600; }\n       set {\n          if (value &lt; 0 || value > 24)\n             throw new ArgumentOutOfRangeException(\n                   $\"{nameof(value)} must be between 0 and 24.\");\n\n          _seconds = value * 3600;\n       }\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\">using<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">System<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">TimePeriod<\/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\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">double<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">_seconds<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">double<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Hours<\/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\">get<\/span><span style=\"color: #ADBAC7\"> { <\/span><span style=\"color: #F47067\">return<\/span><span style=\"color: #ADBAC7\"> _seconds <\/span><span style=\"color: #F47067\">\/<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">3600<\/span><span style=\"color: #ADBAC7\">; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">       <\/span><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">          <\/span><span style=\"color: #F47067\">if<\/span><span style=\"color: #ADBAC7\"> (value <\/span><span style=\"color: #F47067\">&lt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">0<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">||<\/span><span style=\"color: #ADBAC7\"> value <\/span><span style=\"color: #F47067\">&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">24<\/span><span style=\"color: #ADBAC7\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">             <\/span><span style=\"color: #F47067\">throw<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">new<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">ArgumentOutOfRangeException<\/span><span style=\"color: #ADBAC7\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                   <\/span><span style=\"color: #96D0FF\">$&quot;{<\/span><span style=\"color: #F47067\">nameof<\/span><span style=\"color: #96D0FF\">(<\/span><span style=\"color: #ADBAC7\">value<\/span><span style=\"color: #96D0FF\">)} must be between 0 and 24.&quot;<\/span><span style=\"color: #ADBAC7\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">          _seconds <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> value <\/span><span style=\"color: #F47067\">*<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">3600<\/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><\/code><\/pre><\/div>\n\n\n\n<p>Kotlin\uc5d0\uc11c single-line function \uc815\uc758\uc640 \uc720\uc0ac\ud558\uac8c \uac04\ub2e8\ud55c accessor\ub294 \ud55c\uc904\ub85c \ud45c\uc2dc\uac00 \uac00\ub2a5\ud55c\ub370, expression-bodied member\ub77c\uace0 \ubd80\ub978\ub2e4. read-only \uba64\ubc84 \ubcc0\uc218\uc758 \uacbd\uc6b0\uac00 \ub300\ud45c\uc801\uc778 \uc608\ub2e4. \uc0ac\uc6a9\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 &#8216;=&gt;&#8217;\ub97c \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(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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">C#<\/span><\/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>public class Person\n{\n   private string _firstName;\n   private string _lastName;\n   private int _age;\n\n   public Person(string first, string last, int age)\n   {\n      _firstName = first;\n      _lastName = last;\n      Age = age;\n   }\n\n   public string Name => $\"{_firstName} {_lastName}\";\n   public int Age\n   {\n      get => _age;\n      set => _age = value;\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\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Person<\/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\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">_firstName<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   <\/span><span style=\"color: #F47067\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">_lastName<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   <\/span><span style=\"color: #F47067\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">int<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">_age<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">Person<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">first<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">last<\/span><span style=\"color: #ADBAC7\">, <\/span><span style=\"color: #F47067\">int<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">age<\/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\">      _firstName <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> first;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      _lastName <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> last;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      Age <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> age;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Name<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=&gt;<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">$&quot;{<\/span><span style=\"color: #ADBAC7\">_firstName<\/span><span style=\"color: #96D0FF\">} {<\/span><span style=\"color: #ADBAC7\">_lastName<\/span><span style=\"color: #96D0FF\">}&quot;<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">   <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">int<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Age<\/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\">get<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=&gt;<\/span><span style=\"color: #ADBAC7\"> _age;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">      <\/span><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=&gt;<\/span><span style=\"color: #ADBAC7\"> _age <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> value;<\/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>Kotlin\uc5d0\uc120 property\ub97c val\ub85c \uc815\uc758\ud558\ub290\ub0d0, var\ub85c \uc815\uc758\ud558\ub290\ub0d0\uc5d0 \ub530\ub77c read-only, read-write\ub85c \uacb0\uc815\ub418\uc5c8\uc5c8\ub2e4. C#\uc5d0\uc11c\ub294 get\uc774\uc5c6\uc73c\uba74, write-only, set\uc774 \uc5c6\uc73c\uba74 read-only\uac12\uc774 \ub41c\ub2e4. \ub610\ub294,  private\uac19\uc740 access modifier\ub97c \uc774\uc6a9\ud558\uc5ec \ucee8\ud2b8\ub864\ub3c4 \uac00\ub2a5\ud558\ub2e4.<\/p>\n\n\n\n<p>C#\uc5d0\uc11c property\uc758 \uc0c1\uc18d\uc740 virtual, abstract \uc640 override \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \uad6c\ud604\ud55c\ub2e4. \ub2e4\ub978 \uba54\uc18c\ub4dc\uc758 override\uc640 \ub3d9\uc77c\ud558\uac8c \uc0dd\uac01\ud558\uba74 \ub418\uba70, \ub9c8\ucc2c\uac00\uc9c0\ub85c virtual\ub85c \uc815\uc758\ud55c \uac12\uc740 override\ub97c \uc548\ud574\ub3c4 \uc0c1\uad00\uc774 \uc5c6\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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">C#<\/span><\/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>abstract class Shape\n{\n    public abstract double Area\n    {\n        get;\n        set;\n    }\n}\n\nclass Square : Shape\n{\n    public double side;\n\n    \/\/constructor\n    public Square(double s) => side = s;\n\n    public override double Area\n    {\n        get => side * side;\n        set => side = System.Math.Sqrt(value);\n    }\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\">abstract<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Shape<\/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\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">abstract<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">double<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Area<\/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\">get<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">set<\/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>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Square<\/span><span style=\"color: #ADBAC7\"> : <\/span><span style=\"color: #F69D50\">Shape<\/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\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">double<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">side<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\">    \/\/constructor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">Square<\/span><span style=\"color: #ADBAC7\">(<\/span><span style=\"color: #F47067\">double<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">s<\/span><span style=\"color: #ADBAC7\">) <\/span><span style=\"color: #F47067\">=&gt;<\/span><span style=\"color: #ADBAC7\"> side <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> s;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">override<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">double<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Area<\/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\">get<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=&gt;<\/span><span style=\"color: #ADBAC7\"> side <\/span><span style=\"color: #F47067\">*<\/span><span style=\"color: #ADBAC7\"> side;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">=&gt;<\/span><span style=\"color: #ADBAC7\"> side <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> System.Math.<\/span><span style=\"color: #DCBDFB\">Sqrt<\/span><span style=\"color: #ADBAC7\">(value);<\/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><\/code><\/pre><\/div>\n\n\n\n<p>virtual \uc0ac\uc6a9\uc608\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. ( <a href=\"https:\/\/docs.microsoft.com\/ko-kr\/dotnet\/csharp\/language-reference\/keywords\/virtual\">MS \uacf5\uc2dd\ubb38\uc11c \ucc38\uc870<\/a> )<\/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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">C#<\/span><\/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 MyBaseClass\n{\n    \/\/ virtual auto-implemented property. Overrides can only\n    \/\/ provide specialized behavior if they implement get and set accessors.\n    public virtual string Name { get; set; }\n\n    \/\/ ordinary virtual property with backing field\n    private int num;\n    public virtual int Number\n    {\n        get { return num; }\n        set { num = value; }\n    }\n}\n\nclass MyDerivedClass : MyBaseClass\n{\n    private string name;\n\n   \/\/ Override auto-implemented property with ordinary property\n   \/\/ to provide specialized accessor behavior.\n    public override string Name\n    {\n        get\n        {\n            return name;\n        }\n        set\n        {\n            if (!string.IsNullOrEmpty(value))\n            {\n                name = value;\n            }\n            else\n            {\n                name = \"Unknown\";\n            }\n        }\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\">MyBaseClass<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">    \/\/ virtual auto-implemented property. Overrides can only<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">    \/\/ provide specialized behavior if they implement get and set accessors.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">virtual<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Name<\/span><span style=\"color: #ADBAC7\"> { <\/span><span style=\"color: #F47067\">get<\/span><span style=\"color: #ADBAC7\">; <\/span><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\">; }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\">    \/\/ ordinary virtual property with backing field<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">int<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">num<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">virtual<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">int<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Number<\/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\">get<\/span><span style=\"color: #ADBAC7\"> { <\/span><span style=\"color: #F47067\">return<\/span><span style=\"color: #ADBAC7\"> num; }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">set<\/span><span style=\"color: #ADBAC7\"> { num <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> value; }<\/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>\n<span class=\"line\"><span style=\"color: #F47067\">class<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">MyDerivedClass<\/span><span style=\"color: #ADBAC7\"> : <\/span><span style=\"color: #F69D50\">MyBaseClass<\/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\">private<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">name<\/span><span style=\"color: #ADBAC7\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #768390\">   \/\/ Override auto-implemented property with ordinary property<\/span><\/span>\n<span class=\"line\"><span style=\"color: #768390\">   \/\/ to provide specialized accessor behavior.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">public<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">override<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #F69D50\">Name<\/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\">get<\/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\">return<\/span><span style=\"color: #ADBAC7\"> name;<\/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\">set<\/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\">if<\/span><span style=\"color: #ADBAC7\"> (<\/span><span style=\"color: #F47067\">!<\/span><span style=\"color: #F47067\">string<\/span><span style=\"color: #ADBAC7\">.<\/span><span style=\"color: #DCBDFB\">IsNullOrEmpty<\/span><span style=\"color: #ADBAC7\">(value))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                name <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> value;<\/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\">else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">                name <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #96D0FF\">&quot;Unknown&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>\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<hr class=\"wp-block-separator has-css-opacity is-style-dots\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Python<\/h3>\n\n\n\n<p>Python\uc5d0\uc11c property\ub294 @property decorator\ub97c \uba54\uc18c\ub4dc\uc5d0 \ubd99\uc5ec\uc8fc\uba74 \ub41c\ub2e4. \uc774\ub807\uac8c \ud574\uc8fc\uba74 \ucd94\uac00\ub85c setter\uc640 deleter\ub3c4 \uc815\uc758 \uac00\ub2a5\ud558\ub2e4. \uc0ac\uc6a9\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4. ( <a href=\"https:\/\/docs.python.org\/3\/library\/functions.html?highlight=property#property\">Python \uacf5\uc2dd\ubb38\uc11c \ucc38\uc870<\/a> )<\/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:flex;align-items:center;padding:10px 0px 0 16px;font-size:0.8em;width:100%;text-align:left;background-color:#22272e;font-style:italic;color:#adbac7\"><span style=\"border-bottom:1px solid rgba(139, 186, 234, 0.2)\">Python<\/span><\/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 C:\n    def __init__(self):\n        self._x = None\n\n    @property\n    def x(self):\n        \"\"\"I'm the 'x' property.\"\"\"\n        return self._x\n\n    @x.setter\n    def x(self, value):\n        self._x = value\n\n    @x.deleter\n    def x(self):\n        del self._x<\/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\">C<\/span><span style=\"color: #ADBAC7\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">__init__<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">._x <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">None<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">@<\/span><span style=\"color: #6CB6FF\">property<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">x<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #96D0FF\">&quot;&quot;&quot;I&#39;m the &#39;x&#39; property.&quot;&quot;&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">return<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">._x<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">@x.setter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">x<\/span><span style=\"color: #ADBAC7\">(self, value):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">._x <\/span><span style=\"color: #F47067\">=<\/span><span style=\"color: #ADBAC7\"> value<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #DCBDFB\">@x.deleter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">    <\/span><span style=\"color: #F47067\">def<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #DCBDFB\">x<\/span><span style=\"color: #ADBAC7\">(self):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ADBAC7\">        <\/span><span style=\"color: #F47067\">del<\/span><span style=\"color: #ADBAC7\"> <\/span><span style=\"color: #6CB6FF\">self<\/span><span style=\"color: #ADBAC7\">._x<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\ucf54\ub4dc\uc5d0\uc11c \ubcf4\uc774\ub4ef\uc774, @property \uc774\ud6c4\ub85c @x.setter, @x.deleter \ub4f1\uc744 \uc774\uc6a9\ud560 \uc218 \uc788\ub2e4. <\/p>\n\n\n\n<p>python\uc5d0\uc120 private\uc740 &#8216;_'(underscore) , protected\ub294 &#8216;__'(double underscore)\ub97c \ubd99\uc5ec\uc8fc\uba74 \ube44\uc2b7\ud558\uac8c \ub3d9\uc791\ud55c\ub2e4. \ub610\ud55c, duck typing\uc744 \uc0ac\uc6a9\ud558\ubbc0\ub85c virtual, abstract\uac00 \uc5c6\ub2e4. abs \ubaa8\ub4c8\uc744 \uc368\uc11c abstract\ub97c \ud749\ub0b4\ub0b4\uac70\ub098, \uc9c1\uc811 raise NotImplementedError()\ub97c \uc368\uc11c \ube44\uc2b7\ud558\uac8c \ud749\ub0b4\ub97c \ub0b8\ub2e4. \uc774\ub97c \uc774\uc6a9\ud574\uc11c \ud544\uc694\ud55c \ud615\ud0dc\ub85c \uc0c1\uc18d\uc744 \uc0ac\uc6a9\ud558\uba74 \ub41c\ub2e4. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kotlin\uc744 \ubcf4\ub2e4\uac00 backing field\ub97c \uc811\ud558\uba70, \uc774\uac8c \ubb54\uac00\uc2f6\uc5c8\ub294\ub370 \ub2e4\ub978 \uc5b8\uc5b4\ub4e4\ub3c4 \ub2e4 \uc9c0\uc6d0\ud558\ub294 property\uc5d0 \ub300\ud55c \ub0b4\uc6a9\uc774\uc5c8\ub2e4. \uadf8\ub3d9\uc548 \uc194\uc9c1\ud788 member variable\uacfc property\uc5d0 \ub300\ud55c \uac1c\ub150\uc774 \ub530\ub85c \uc5c6\uc5c8\uc74c. \uc544&#8230; \ubd80\ub044\ub7fd\ub124. \uc544\ubb4f\ud2bc \uc815\ub9ac\ud574\ubcf4\ub3c4\ub85d \ud55c\ub2e4. property\ub294 \uac04\ub2e8\ud788 \ub9d0\ud574, member variable\uc5d0 \ub300\ud55c encapsulation\uc774\ub77c\uace0 \ud560 \uc218 \uc788\ub2e4. \ud074\ub798\uc2a4\ub97c \uc791\uc131\ud560 \ub54c, \uac12\uc744 \uc800\uc7a5\ud560 \ubcc0\uc218\ub97c \ub9cc\ub4e4\uace0 \uc758\uc2dd\uc801\uc73c\ub85c getter, setter\ub97c \ub9cc\ub4e4\uc5b4 \uc8fc\uace0 \uc788\uc5c8\uc9c0\ub9cc, \uc774\ub97c \uc5b8\uc5b4 \ub808\ubca8\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294\uac8c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,6,34,33],"tags":[109,38,116,162,35,129,41,55],"class_list":["post-490","post","type-post","status-publish","format-standard","hentry","category-note4reference","category-unity","category-kotlin","category-python","tag-c","tag-kotlin","tag-oop","tag-property","tag-python","tag-oop-kr","tag-kotlin-kr","tag-python-kr"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/490","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=490"}],"version-history":[{"count":5,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/490\/revisions"}],"predecessor-version":[{"id":4800,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/posts\/490\/revisions\/4800"}],"wp:attachment":[{"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/media?parent=490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/categories?post=490"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/batmask.net\/index.php\/wp-json\/wp\/v2\/tags?post=490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}