PageSourceSearch

https://azderica.github.io/til/assets/js/2d9bec8e.74c7d73e.js

js azderica.github.io collected 2026-10-03 08:43:54 UTC 50,686 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunktil=self.webpackChunktil||[]).push([[7563],{3905:function(e,t,n){n.d(t,{Zo:function(){return k},kt:function(){return s}});var a=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,a,l=function(e,t){if(null==e)return{};var n,a,l={},r=Object.keys(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a<r.length;a++)n=r[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var o=a.createContext({}),p=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},k=function(e){var t=p(e.components);return a.createElement(o.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,l=e.mdxType,r=e.originalType,o=e.parentName,k=u(e,["components","mdxType","originalType","parentName"]),m=p(n),s=l,d=m["".concat(o,".").concat(s)]||m[s]||c[s]||r;return n?a.createElement(d,i(i({ref:t},k),{},{components:n})):a.createElement(d,i({ref:t},k))}));function s(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var r=n.length,i=new Array(r);i[0]=m;var u={};for(var o in t)hasOwnProperty.call(t,o)&&(u[o]=t[o]);u.originalType=e,u.mdxType="string"==typeof e?e:l,i[1]=u;for(var p=2;p<r;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},1434:function(e,t,n){n.r(t),n.d(t,{default:function(){return k},frontMatter:function(){return i},metadata:function(){return u},toc:function(){return o}});var a=n(7462),l=n(3366),r=(n(7294),n(3905)),i={sidebar_position:4},u={unversionedId:"kotlin/kotlin-in-action/ch4",id:"kotlin/kotlin-in-action/ch4",isDocsHomePage:!1,title:"4. \ud074\ub798\uc2a4, \uac1d\uccb4, \uc778\ud130\ud398\uc774\uc2a4",description:"4.1 \ud074\ub798\uc2a4 \uacc4\uce35 \uc815\uc758",source:"@site/docs/kotlin/kotlin-in-action/ch4.md",sourceDirName:"kotlin/kotlin-in-action",slug:"/kotlin/kotlin-in-action/ch4",permalink:"/til/docs/kotlin/kotlin-in-action/ch4",editUrl:"https://github.com/Azderica/til/edit/master/docs/kotlin/kotlin-in-action/ch4.md",version:"current",lastUpdatedAt:1651441562,formattedLastUpdatedAt:"5/1/2022",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"3. \ud568\uc218 \uc815\uc758\uc640 \ud638\ucd9c",permalink:"/til/docs/kotlin/kotlin-in-action/ch3"},next:{title:"5. \ub78c\ub2e4\ub85c \ud504\ub85c\uadf8\ub798\ubc0d",permalink:"/til/docs/kotlin/kotlin-in-action/ch5"}},o=[{value:"4.1 \ud074\ub798\uc2a4 \uacc4\uce35 \uc815\uc758",id:"41-\ud074\ub798\uc2a4-\uacc4\uce35-\uc815\uc758",children:[{value:"4.1.1 \ucf54\ud2c0\ub9b0 \uc778\ud130\ud398\uc774\uc2a4",id:"411-\ucf54\ud2c0\ub9b0-\uc778\ud130\ud398\uc774\uc2a4",children:[]},{value:"4.1.2 open, final, abstract \ubcc0\uacbd\uc790: \uae30\ubcf8\uc801\uc73c\ub85c final",id:"412-open-final-abstract-\ubcc0\uacbd\uc790-\uae30\ubcf8\uc801\uc73c\ub85c-final",children:[]},{value:"4.1.3 \uac00\uc2dc\uc131 \ubcc0\uacbd\uc790: \uae30\ubcf8\uc801\uc73c\ub85c \uacf5\uac1c",id:"413-\uac00\uc2dc\uc131-\ubcc0\uacbd\uc790-\uae30\ubcf8\uc801\uc73c\ub85c-\uacf5\uac1c",children:[]},{value:"4.1.4 \ub0b4\ubd80 \ud074\ub798\uc2a4\uc640 \uc911\ucca9\ub41c \ud074\ub798\uc2a4: \uae30\ubcf8\uc801\uc73c\ub85c \uc911\ucca9 \ud074\ub798\uc2a4",id:"414-\ub0b4\ubd80-\ud074\ub798\uc2a4\uc640-\uc911\ucca9\ub41c-\ud074\ub798\uc2a4-\uae30\ubcf8\uc801\uc73c\ub85c-\uc911\ucca9-\ud074\ub798\uc2a4",children:[]},{value:"4.1.5 \ubd09\uc778\ub41c \ud074\ub798\uc2a4: \ud074\ub798\uc2a4 \uacc4\uce35 \uc815\uc758 \uc2dc \uacc4\uce35 \ud655\uc7a5 \uc81c\ud55c",id:"415-\ubd09\uc778\ub41c-\ud074\ub798\uc2a4-\ud074\ub798\uc2a4-\uacc4\uce35-\uc815\uc758-\uc2dc-\uacc4\uce35-\ud655\uc7a5-\uc81c\ud55c",children:[]}]},{value:"4.2 \ubed4\ud558\uc9c0 \uc54a\uc740 \uc0dd\uc131\uc790\uc640 \ud504\ub85c\ud37c\ud2f0\ub97c \uac16\ub294 \ud074\ub798\uc2a4 \uc120\uc5b8",id:"42-\ubed4\ud558\uc9c0-\uc54a\uc740-\uc0dd\uc131\uc790\uc640-\ud504\ub85c\ud37c\ud2f0\ub97c-\uac16\ub294-\ud074\ub798\uc2a4-\uc120\uc5b8",children:[{value:"4.2.1 \ud074\ub798\uc2a4 \ucd08\uae30\ud654: \uc8fc \uc0dd\uc131\uc790\uc640 \ucd08\uae30\ud654 \ube14\ub85d",id:"421-\ud074\ub798\uc2a4-\ucd08\uae30\ud654-\uc8fc-\uc0dd\uc131\uc790\uc640-\ucd08\uae30\ud654-\ube14\ub85d",children:[]},{value:"4.2.2 \ubdf0 \uc0dd\uc131\uc790: \uc0c1\uc704 \ud074\ub798\uc2a4\ub97c \ub2e4\ub978 \ubc29\uc2dd\uc73c\ub85c \ucd08\uae30\ud654",id:"422-\ubdf0-\uc0dd\uc131\uc790-\uc0c1\uc704-\ud074\ub798\uc2a4\ub97c-\ub2e4\ub978-\ubc29\uc2dd\uc73c\ub85c-\ucd08\uae30\ud654",children:[]},{value:"4.2.3 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uc120\uc5b8\ub41c \ud504\ub85c\ud37c\ud2f0 \uad6c\ud604",id:"423-\uc778\ud130\ud398\uc774\uc2a4\uc5d0-\uc120\uc5b8\ub41c-\ud504\ub85c\ud37c\ud2f0-\uad6c\ud604",children:[]},{value:"4.2.4 \uac8c\ud130\uc640 \uc138\ud130\uc5d0\uc11c \ub4b7\ubc1b\uce68\ud558\ub294 \ud544\ub4dc\uc5d0 \uc811\uadfc",id:"424-\uac8c\ud130\uc640-\uc138\ud130\uc5d0\uc11c-\ub4b7\ubc1b\uce68\ud558\ub294-\ud544\ub4dc\uc5d0-\uc811\uadfc",children:[]},{value:"4.2.5 \uc811\uadfc\uc790\uc758 \uac00\uc2dc\uc131 \ubcc0\uacbd",i
1d:"425-\uc811\uadfc\uc790\uc758-\uac00\uc2dc\uc131-\ubcc0\uacbd",children:[]}]},{value:"4.3 \ucef4\ud30c\uc77c\ub7ec\uac00 \uc0dd\uc131\ud55c \uba54\uc11c\ub4dc: \ub370\uc774\ud130 \ud074\ub798\uc2a4\uc640 \ud074\ub798\uc2a4 \uc704\uc784",id:"43-\ucef4\ud30c\uc77c\ub7ec\uac00-\uc0dd\uc131\ud55c-\uba54\uc11c\ub4dc-\ub370\uc774\ud130-\ud074\ub798\uc2a4\uc640-\ud074\ub798\uc2a4-\uc704\uc784",children:[{value:"4.3.1 \ubaa8\ub4e0 \ud074\ub798\uc2a4\uac00 \uc815\uc758\ud574\uc57c \ud558\ub294 \uba54\uc11c\ub4dc",id:"431-\ubaa8\ub4e0-\ud074\ub798\uc2a4\uac00-\uc815\uc758\ud574\uc57c-\ud558\ub294-\uba54\uc11c\ub4dc",children:[]},{value:"4.3.2 \ub370\uc774\ud130 \ud074\ub798\uc2a4: \ubaa8\ub4e0 \ud074\ub798\uc2a4\uac00 \uc815\uc758\ud574\uc57c \ud558\ub294 \uba54\uc11c\ub4dc \uc790\ub3d9 \uc0dd\uc131",id:"432-\ub370\uc774\ud130-\ud074\ub798\uc2a4-\ubaa8\ub4e0-\ud074\ub798\uc2a4\uac00-\uc815\uc758\ud574\uc57c-\ud558\ub294-\uba54\uc11c\ub4dc-\uc790\ub3d9-\uc0dd\uc131",children:[]},{value:"4.3.3 \ud074\ub798\uc2a4 \uc704\uc784: by \ud0a4\uc6cc\ub4dc \uc0ac\uc6a9",id:"433-\ud074\ub798\uc2a4-\uc704\uc784-by-\ud0a4\uc6cc\ub4dc-\uc0ac\uc6a9",children:[]}]},{value:"4.4 object \ud074\ub798\uc2a4: \ud074\ub798\uc2a4 \uc120\uc5b8\uacfc \uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131",id:"44-object-\ud074\ub798\uc2a4-\ud074\ub798\uc2a4-\uc120\uc5b8\uacfc-\uc778\uc2a4\ud134\uc2a4-\uc0dd\uc131",children:[{value:"4.4.1 \uac1d\uccb4 \uc120\uc5b8: \uc2f1\uae00\ud134\uc744 \uc27d\uac8c \ub9cc\ub4e4\uae30",id:"441-\uac1d\uccb4-\uc120\uc5b8-\uc2f1\uae00\ud134\uc744-\uc27d\uac8c-\ub9cc\ub4e4\uae30",children:[]},{value:"4.4.2 \ub3d9\ubc18 \uac1d\uccb4: \ud329\ud1a0\ub9ac \uba54\uc11c\ub4dc\uc640 \uc815\uc801 \uba64\ubc84\uac00 \ub4e4\uc5b4\uac08 \uc7a5\uc18c",id:"442-\ub3d9\ubc18-\uac1d\uccb4-\ud329\ud1a0\ub9ac-\uba54\uc11c\ub4dc\uc640-\uc815\uc801-\uba64\ubc84\uac00-\ub4e4\uc5b4\uac08-\uc7a5\uc18c",children:[]},{value:"4.4.3 \ub3d9\ubc18 \uac1d\uccb4\ub97c \uc77c\ubc18 \uac1d\uccb4\ucc98\ub7fc \uc0ac\uc6a9",id:"443-\ub3d9\ubc18-\uac1d\uccb4\ub97c-\uc77c\ubc18-\uac1d\uccb4\ucc98\ub7fc-\uc0ac\uc6a9",children:[]},{value:"4.4.4 \uac1d\uccb4 \uc2dd: \ubb34\uba85 \ub0b4\ubd80 \ud074\ub798\uc2a4\ub97c \ub2e4\ub978 \ubc29\uc2dd\uc73c\ub85c \uc791\uc131",id:"444-\uac1d\uccb4-\uc2dd-\ubb34\uba85-\ub0b4\ubd80-\ud074\ub798\uc2a4\ub97c-\ub2e4\ub978-\ubc29\uc2dd\uc73c\ub85c-\uc791\uc131",children:[]}]},{value:"4.5 \uc694\uc57d",id:"45-\uc694\uc57d",children:[]}],p={toc:o};function k(e){var t=e.components,n=(0,l.Z)(e,["components"]);return(0,r.kt)("wrapper",(0,a.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"41-\ud074\ub798\uc2a4-\uacc4\uce35-\uc815\uc758"},"4.1 \ud074\ub798\uc2a4 \uacc4\uce35 \uc815\uc758"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0 \uac00\uc2dc\uc131/\uc811\uadfc \ubcc0\uacbd\uc790\ub294 \uc790\ubc14\uc640 \ube44\uc2b7\ud558\uc9c0\ub9cc \uc544\ubb34\uac83\ub3c4 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc740 \uacbd\uc6b0 \uae30\ubcf8 \uac00\uc2dc\uc131\uc740 \ub2e4\ub985\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sealed"),"\uc740 \ud074\ub798\uc2a4 \uc0c1\uc18d\uc744 \uc81c\ud55c\ud569\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"411-\ucf54\ud2c0\ub9b0-\uc778\ud130\ud398\uc774\uc2a4"},"4.1.1 \ucf54\ud2c0\ub9b0 \uc778\ud130\ud398\uc774\uc2a4"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ub2e4\uc74c\uacfc \uac19\uc740 \uc608\uc2dc\uac00 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"interface Clickable {\n  fun click()\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},'class Button: Clickable {\n  override fun click() = println("I was clicked")\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc5d0\uc11c\ub294 override \ubcc0\uacbd\uc790\ub97c \uaf2d \uc0ac\uc6a9\ud574\uc57c\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ub514\ud3f4\ud2b8 \uba54\uc11c\ub4dc\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},'interface Clickable {\n  fun click()   // \uc77c\ubc18 \uba54\uc11c\ub4dc \uc120\uc5b8\n  fun showoff() = println("I\'m clickable!") // \ub514\ud3f4\ud2b8 \uad6c\ud604\uc774 \uc788\ub294 \uba54\uc11c\ub4dc\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},'interface Focusable {\n  fun showOff() = println("I\'m focusable!")\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0 \ucef4\ud30c\uc77c\ub7ec\ub294 \ub450 \uba54\uc11c\ub4dc\ub97c \uc544\uc6b0\ub974\ub294 \uad6c\ud604\uc744 \ud558\uc704 \ud074\ub798\uc2a4\uc5d0 \uc9c1\uc811 \uad6c\ud604\ud558\uac8c \uac15\uc81c\ud569\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},'class Button: Clickable, Focusable {\n  override fun click() = println("I was clicked")\n  override fun shoOff() {\n    super<Clickable>.showOff()\n    super<Focusable>.showOff()\n  }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc740 \uc790\ubc14 6\uc640 \ud638\ud658\ub418\uac8c \uc124\uacc4\ub418\uc5c8\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"412-open-final-abstract-\ubcc0\uacbd\uc790-\uae30\ubcf8\uc801\uc73c\ub85c-final"},"4.1.2 open, final, abstract \ubcc0\uacbd\uc790: \uae30\ubcf8\uc801\uc73c\ub85c final"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucde8\uc57d\ud55c \uae30\ubc18 \ud074\ub798\uc2a4(fragile base class)\uc640 \uac19\uc740 \ubb38\uc81c\ub294 \ud558\uc704 \ud074\ub798\uc2a4\uac00 \uae30\ubc18 \ud074\ub798\uc2a4\uc5d0 \ub300\ud574 \uac00\uc84c\ub358 \uac00\uc815\uc774 \uae30\ubc18 \ud074\ub798\uc2a4\ub97c \ubcc0\uacbd\ud568\uc73c\ub85c \uae68\uc838\ubc84\ub9b0 \uacbd\uc6b0\uc5d0 \uc0dd\uae41\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc758 \ud074\ub798\uc2a4\uc640 \uba54\uc11c\ub4dc\ub294 \uae30\ubcf8\uc801\uc73c\ub85c ",(0,r.kt)("inlineCode",{parentName:"li"},"final"),"\uc785\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\uc0c1\uc18d\uc744 \ud5c8\uc6a9\ud558\ub824\uba74 \ud074\ub798\uc2a4 \uc55e\uc5d0 ",(0,r.kt)("inlineCode",{parentName:"li"},"open")," \ubcc0\uacbd\uc790\ub97c \ubd99\uc5ec\uc57c \ud569\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"open class RichButton: Clickable {\n  fun disable() {}      // \uc774 \ud568\uc218\ub294 \ud30c\uc774\ub110\uc785\ub2c8\ub2e4.\n  open fun animate() {} // \ud558\uc704 \ud074\ub798\uc2a4\uc5d0\uc11c \uc774 \uba54\uc11c\ub4dc\ub97c \uc624\ubc84\ub77c\uc774\ub4dc\ud574\ub3c4 \ub429\ub2c8\ub2e4.\n  override fun click() {} // \uc774 \ud568\uc218\ub294 \uc0c1\uc704 \ud074\ub798\uc2a4\uc5d0\uc11c \uc5f4\ub824\uc788\ub294 \uba54\uc11c\ub4dc\ub97c \uc624\ubc84\ub77c\uc774\ub4dc\ud569\ub2c8\ub2e4.\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc624\ubc84\ub77c\uc774\ub4dc\ub97c \uae08\uc9c0\ud558\ub824\uba74 ",(0,r.kt)("inlineCode",{parentName:"li"},"final"),"\uc744 \uba85\uc2dc\ud574\uc57c \ud569\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"open class RichButton: Clickable {\n  final override fun click() {}\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"final\uc744 \ud1b5\ud574 \ub2e4\uc591\ud55c \uacbd\uc6b0\uc5d0 \uc2a4\ub9c8\ud2b8 \uce90\uc2a4\ud2b8\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"abstract\ub85c \uc120\uc5b8\ud55c \ucd94\uc0c1 \ud074\ub798\uc2a4\ub294 \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"abstract class Animated {   // \ucd94\uc0c1 \ud074\ub798\uc2a4\n  abstract fun animate()    // \ucd94\uc0c1 \ud568\uc218\n  open fun stopAnimating() {}\n  fun animateTwice() {}\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc704\ub97c \uc694\uc57d\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\ubcc0\uacbd\uc790"),(0,r.kt)("th",{parentName:"tr",align:null},"\uc624\ubc84\ub77c\uc774\ub4dc \uad00\ub828"),(0,r.kt)("th",{parentName:"tr",align:null},"\uc124\uba85"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"final")),(0,r.kt)("td",{parentName:"tr",align:null},"\uc624\ubc84\ub77c\uc774\ub4dc\ud560 \uc218 \uc5c6\uc74c"),(0,r.kt)("td",{parentName:"tr",align:null},"\ud074\ub798\uc2a4 \uba64\ubc84\uc758 \uae30\ubcf8 \ubcc0\uacbd\uc790")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"open")),(0,r.kt)("td",{parentName:"tr",align:null},"\uc624\ubc84\ub77c\uc774\ub4dc\ud560 \uc218 \uc788\uc74c"),(0,r.kt)("td",{parentName:"tr",align:null},"\ubc18\ub4dc\uc2dc open\uc744 \uba85\uc2dc\ud574\uc57c \uc624\ubc84\ub77c\uc774\ub4dc\ud560 \uc218 \uc788\uc74c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"abstract")),(0,r.kt)("td",{parentName:"tr",align:null},"\ubc18\ub4dc\uc2dc \uc624\ubc84\ub77c\uc774\ub4dc\ud574\uc57c\ud568"),(0,r.kt)("td",{parentName:"tr",align:null},"\ucd94\uc0c1 \ud074\ub798\uc2a4\uc758 \uba64\ubc84\uc5d0\ub9cc \ubcc0\uacbd\uc790\ub97c \ubd99\uc77c \uc218 \uc788\uc74c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"override")),(0,r.kt)("td",{parentName:"tr",align:null},"\uc0c1\uc704 \ud074\ub798\uc2a4\ub098 \uc0c1\uc704 \uc778\uc2a4\ud134\uc2a4\uc758 \uba64\ubc84\ub97c \uc624\ubc84\ub77c\uc774\ub4dc"),(0,r.kt)("td",{parentName:"tr",align:null},"\uc624\ubc84\ub77c\uc774\ub4dc\ud558\ub294 \uba64\ubc84\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uc5f4\ub824\uc788\uc74c")))),(0,r.kt)("h3",{id:"413-\uac00\uc2dc\uc131-\ubcc0\uacbd\uc790-\uae30\ubcf8\uc801\uc73c\ub85c-\uacf5\uac1c"},"4.1.3 \uac00\uc2dc\uc131 \ubcc0\uacbd\uc790: \uae30\ubcf8\uc801\uc73c\ub85c \uacf5\uac1c"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uac00\uc2dc\uc131 \ubcc0\uacbd\uc790\ub294 \uc790\ubc14\uc640 \ube44\uc2b7\ud558\uc9c0\ub9cc \ud328\ud0a4\uc9c0 \uc804\uc6a9(package-private)\ub294 \uc5c6\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc5d0\uc11c\ub294 internal\uc774 \uc0c8\ub85c \ub4f1\uc7a5\ud588\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\ubcc0\uacbd\uc790"),(0,r.kt)("th",{parentName:"tr",align:null},"\ud074\ub798\uc2a4 \uba64\ubc84"),(0,r.kt)("th",{parentName:"tr",align:null},"\ucd5c\uc0c1\uc704 \uc120\uc5b8"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"public")),(0,r.kt)("td",{parentName:"tr",align:null},"\ubaa8\ub4e0 \uacf3\uc5d0\uc11c \ubcfc \uc218 \uc788\uc74c"),(0,r.kt)("td",{parentName:"tr",align:null},"\ubaa8\ub4e0 \uacf3\uc5d0\uc11c \ubcfc \uc218 \uc788\uc74c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"internal")),(0,r.kt)("td",{parentName:"tr",align:null},"\uac19\uc740 \ubaa8\ub4c8 \uc548\uc5d0\uc11c\ub9cc \ubcfc \uc218 \uc788\uc74c"),(0,r.kt)("td",{parentName:"tr",align:null},"\uac19\uc740 \ubaa8\ub4c8 \uc548\uc5d0\uc11c\ub9cc \ubcfc \uc218 \uc788\uc74c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"protected")),(0,r.kt)("td",{parentName:"tr",align:null},"\ud558\uc704 \ud074\ub798\uc2a4 \uc548\uc5d0\uc11c\ub9cc \ubcfc \uc218 \uc788\uc74c"),(0,r.kt)("td",{parentName:"tr",align:null},"(\ucd5c\uc0c1\uc704 \uc120\uc5b8\uc5d0 \uc801\uc6a9\ud560 \uc218 \uc5c6\uc74c)")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"private")),(0,r.kt)("td",{parentName:"tr",align:null},"\uac19\uc740 \ud074\ub798\uc2a4 \uc548\uc5d0\uc11c\ub9cc \ubcfc \uc218 \uc788\uc74c"),(0,r.kt)("td",{parentName:"tr",align:null},"\uac19\uc740 \ud30c\uc77c \uc548\uc5d0\uc11c\ub9cc \ubcfc \uc218 \uc788\uc74c")))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc744 \uc790\ubc14\ub85c \ubcc0\uacbd\uc2dc, private\uc744 package-private\ub85c \ucef4\ud30c\uc77c\ud569\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"414-\ub0b4\ubd80-\ud074\ub798\uc2a4\uc640-\uc911\ucca9\ub41c-\ud074\ub798\uc2a4-\uae30\ubcf8\uc801\uc73c\ub85c-\uc911\ucca9-\ud074\ub798\uc2a4"},"4.1.4 \ub0b4\ubd80 \ud074\ub798\uc2a4\uc640 \uc911\ucca9\ub41c \ud074\ub798\uc2a4: \uae30\ubcf8\uc801\uc73c\ub85c \uc911\ucca9 \ud074\ub798\uc2a4"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc790\ubc14\ucc98\ub7fc \ucf54\ud2c0\ub9b0\uc5d0\uc11c\ub3c4 \ud074\ub798\uc2a4 \uc548\uc5d0 \ub2e4\ub978 \ud074\ub798\uc2a4\ub97c \uc120\uc5b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"class Button : View {\n  override fun getCurrentState() : State = ButtonState()\n  override fun restoreState(state: State) { /*...*/ }\n  class ButtonState : State { /*...*/ }\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc790\ubc14\uc640 \ucf54\ud2c0\ub9b0\uc758 \uc911\ucca9 \ud074\ub798\uc2a4\uc640 \ub0b4\ubd80 \ud074\ub798\uc2a4\uc758 \uad00\uacc4\uc785\ub2c8\ub2e4.")),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\ud074\ub798\uc2a4 B \uc548\uc5d0 \uc815\uc758\ub41c \ud074\ub798\uc2a4 A"),(0,r.kt)("th",{parentName:"tr",align:null},"\uc790\ubc14"),(0,r.kt)("th",{parentName:"tr",align:null},"\ucf54\ud2c0\ub9b0"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"\uc911\ucca9 \ud074\ub798\uc2a4(\ubc14\uae65\ucabd \ud074\ub798\uc2a4\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \uc800\uc7a5\ud558\uc9c0 \uc54a\uc74c)"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"static class A")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"class A"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"\ub0b4\ubd80 \ud074\ub798\uc2a4(\ubc14\uae65\ucabd \ud074\ub798\uc2a4\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \uc800\uc7a5\ud568)"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"class A")),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"}
1,"inner class A"))))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Inner \uc548\uc5d0\uc11c \ubc14\uae65\ucabd \ud074\ub798\uc2a4 Outer\uc758 \ucc38\uc870\uc5d0 \uc811\uadfc\ud558\ub824\uba74 ",(0,r.kt)("inlineCode",{parentName:"li"},"this@Outer"),"\ub77c\uace0 \uc368\uc57c \ud569\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"class Outer {\n  inner class Inner {\n    fun getOuterReference(): Outer = this@Outer\n  }\n}\n")),(0,r.kt)("h3",{id:"415-\ubd09\uc778\ub41c-\ud074\ub798\uc2a4-\ud074\ub798\uc2a4-\uacc4\uce35-\uc815\uc758-\uc2dc-\uacc4\uce35-\ud655\uc7a5-\uc81c\ud55c"},"4.1.5 \ubd09\uc778\ub41c \ud074\ub798\uc2a4: \ud074\ub798\uc2a4 \uacc4\uce35 \uc815\uc758 \uc2dc \uacc4\uce35 \ud655\uc7a5 \uc81c\ud55c"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc740 \uc0c1\uc704 \ud074\ub798\uc2a4\uc5d0 sealed \ubcc0\uacbd\uc790\ub97c \ud1b5\ud574 \uc0c1\uc704 \ud074\ub798\uc2a4\ub97c \uc0c1\uc18d\ud658 \ud558\uc704 \ud074\ub798\uc2a4 \uc815\uc758\ub97c \uc81c\ud55c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"sealed class Expr {\n  class Num(val value: Int) : Expr()\n  class Sum(val left: Expr, val right: Expr) : Expr()\n}\n\nfun eval(e: Expr): Int =\n  when (e) {\n    is Expr.Num -> e.value\n    is Expr.Sum -> eval(e.right) + eval(e.left)\n  }\n")),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"42-\ubed4\ud558\uc9c0-\uc54a\uc740-\uc0dd\uc131\uc790\uc640-\ud504\ub85c\ud37c\ud2f0\ub97c-\uac16\ub294-\ud074\ub798\uc2a4-\uc120\uc5b8"},"4.2 \ubed4\ud558\uc9c0 \uc54a\uc740 \uc0dd\uc131\uc790\uc640 \ud504\ub85c\ud37c\ud2f0\ub97c \uac16\ub294 \ud074\ub798\uc2a4 \uc120\uc5b8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc740 \uc8fc(primary) \uc0dd\uc131\uc790\uc640 \ubd80(secondary) \uc0dd\uc131\uc790\ub97c \uad6c\ubd84\ud569\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"421-\ud074\ub798\uc2a4-\ucd08\uae30\ud654-\uc8fc-\uc0dd\uc131\uc790\uc640-\ucd08\uae30\ud654-\ube14\ub85d"},"4.2.1 \ud074\ub798\uc2a4 \ucd08\uae30\ud654: \uc8fc \uc0dd\uc131\uc790\uc640 \ucd08\uae30\ud654 \ube14\ub85d"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"class User constructor(_nickname: String) { // \uc8fc \uc0dd\uc131\uc790\n  val nickname: String\n  init {    // \ucd08\uae30\ud654 \ube14\ub85d\n    nickname = _nickname\n  }\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"constructor")," \ud0a4\uc6cc\ub4dc\ub294 \uc8fc \uc0dd\uc131\uc790\ub098 \ubd80 \uc0dd\uc131\uc790 \uc815\uc758\ub97c \uc2dc\uc791\ud560 \ub54c \uc0ac\uc6a9\ud558\uace0, ",(0,r.kt)("inlineCode",{parentName:"li"},"init")," \ud0a4\uc6cc\ub4dc\ub294 \ucd08\uae30\ud654 \ube14\ub85d\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4"),(0,r.kt)("li",{parentName:"ul"},"\ucd08\uae30\ud654 \ube14\ub85d\uc740 \uc8fc \uc0dd\uc131\uc790\uc640 \ud568\uaed8 \uc0ac\uc6a9\ub429\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ud074\ub798\uc2a4 \uc815\uc758 \uc2dc \ubcc4\ub3c4\ub85c \uc0dd\uc131\uc790\ub97c \uc815\uc758\ud558\uc9c0 \uc54a\uc73c\uba74 \ucef4\ud30c\uc77c\ub7ec\uac00 \uc790\ub3d9\uc73c\ub85c \uc778\uc790\uac00 \uc5c6\ub294 \ub514\ud3f4\ud2b8 \uc0dd\uc131\uc790\ub97c \ub9cc\ub4ed\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ud074\ub798\uc2a4\ub97c \uc678\ubd80\uc5d0\uc11c \uc778\uc2a4\ud134\uc2a4\ud654\ud558\uc9c0 \ubabb\ud558\uac8c \ud558\ub824\uba74 private\uc73c\ub85c \ub9cc\ub4e4\uba74 \ub429\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"422-\ubdf0-\uc0dd\uc131\uc790-\uc0c1\uc704-\ud074\ub798\uc2a4\ub97c-\ub2e4\ub978-\ubc29\uc2dd\uc73c\ub85c-\ucd08\uae30\ud654"},"4.2.2 \ubdf0 \uc0dd\uc131\uc790: \uc0c1\uc704 \ud074\ub798\uc2a4\ub97c \ub2e4\ub978 \ubc29\uc2dd\uc73c\ub85c \ucd08\uae30\ud654"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\uc778\uc790\uc5d0 \ub300\ud55c \ub514\ud3f4\ud2b8 \uac12\uc744 \uc81c\uacf5\ud558\uae30 \uc704\ud574 \ubd80 \uc0dd\uc131\uc790\ub97c \uc5ec\ub7ec\uac1c \ub9cc\ub4e4\uc9c0 \ub9d0\uace0 \ud30c\ub77c\ubbf8\ud130\uc758 \ub514\ud3f4\ud2b8 \uac12\uc744 \uc0dd\uc131\uc790 \uc2dc\uadf8\ub2c8\ucc98\uc5d0 \uba85\uc2dc\ud574\uc57c \ud569\ub2c8\ub2e4.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc0dd\uc131\uc790\ub294 \uc5ec\ub7ec \ud544\uc694\ud55c \uacbd\uc6b0\uac00 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"open class View {\n  constructor(ctx: Context) { /* \ucf54\ub4dc */ }  // \ubd80 \uc0dd\uc131\uc790\n  constructor(ctx: Context, attr: AttributeSet) { /* \ucf54\ub4dc */ }  // \ubd80 \uc0dd\uc131\uc790\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"class MyButton: View {\n  constructor(ctx: Context) : super(ctx) { /* \ucf54\ub4dc */}\n  constructor(ctx: Context, attr: AttributeSet) : super(ctx, attr) { /* \ucf54\ub4dc */}\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc704\ub294 \uc0dd\uc131\uc790\ub97c \uc704\uc784\ud55c \uc608\uc2dc\uc785\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"423-\uc778\ud130\ud398\uc774\uc2a4\uc5d0-\uc120\uc5b8\ub41c-\ud504\ub85c\ud37c\ud2f0-\uad6c\ud604"},"4.2.3 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uc120\uc5b8\ub41c \ud504\ub85c\ud37c\ud2f0 \uad6c\ud604"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc778\ud130\ud398\uc774\uc2a4\ub294 \uc544\ubb34 \uc0c1\ud0dc\ub97c \ud3ec\ud568\ud560 \uc218 \uc5c6\uc73c\ubbc0\ub85c \uc0c1\ud0dc\ub97c \uc800\uc7a5\ud560 \ud544\uc694\uac00 \uc788\ub2e4\uba74 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud55c \ud558\uc704 \ud074\ub798\uc2a4\uc5d0\uc11c \uc0c1\ud0dc \uc800\uc7a5\uc744 \uc704\ud55c \ud504\ub85c\ud37c\ud2f0\ub97c \ub9cc\ub4e4\uc5b4\uc57c \ud569\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"class PrivateUser(override val nickname: String) : User // \uc8fc \uc0dd\uc131\uc790\uc5d0 \uc788\ub294 \ud504\ub85c\ud37c\ud2f0\nclass SubscribingUser(val email: String) : User {\n  override val nickname: String\n    get() = email.substringBefore('@')  // \ucee4\uc2a4\ud140 \uac8c\ud130\n}\nclass FacebookUser(val accountId: Int) : User {\n  override val nickname = getFacebookName(accountId)  // \ud504\ub85c\ud37c\ud2f0 \ucd08\uae30\ud654 \uc2dd\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uc120\uc5b8\ub41c \ud504\ub85c\ud37c\ud2f0\uc640 \ub2ec\ub9ac \ud074\ub798\uc2a4\uc5d0 \uad6c\ud604\ub41c \ud504\ub85c\ud37c\ud2f0\ub294 \ub4b7\ubc1b\uce68\ud558\ub294 \ud544\ub4dc\ub97c \uc6d0\ud558\ub294 \ub300\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"424-\uac8c\ud130\uc640-\uc138\ud130\uc5d0\uc11c-\ub4b7\ubc1b\uce68\ud558\ub294-\ud544\ub4dc\uc5d0-\uc811\uadfc"},"4.2.4 \uac8c\ud130\uc640 \uc138\ud130\uc5d0\uc11c \ub4b7\ubc1b\uce68\ud558\ub294 \ud544\ub4dc\uc5d0 \uc811\uadfc"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc5d0\uc11c \ud504\ub85c\ud37c\ud2f0\uc758 \uac12\uc744 \ubc14\uafc0 \ub54c\ub294 ",(0,r.kt)("inlineCode",{parentName:"li"},'user.address = "new value"'),"\ucc98\ub7fc \ud544\ub4dc \uc124\uc815 \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},'// \uc0c8\ud130\uc5d0\uc11c \ub4b7\ubc1b\uce68\ud558\ub294 \ud544\ub4dc \uc811\uadfc\nclass User(val name: String) {\n  var address: String = "unspecified"\n    set(value: String) {\n      println("""\n        Address was changed for $name:\n        "$field" -> "$value".""".trimIndent())\n      field = value\n    }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ubcc0\uacbd \uac00\ub2a5 \ud504\ub85c\ud37c\ud2f0\uc758 \uac8c\ud130\uc640\uc138\ud130 \uc911 \ud55c\ucabd\ub9cc \uc9c1\uc811 \uc815\uc758\ud574\ub3c4 \ub429\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"425-\uc811\uadfc\uc790\uc758-\uac00\uc2dc\uc131-\ubcc0\uacbd"},"4.2.5 \uc811\uadfc\uc790\uc758 \uac00\uc2dc\uc131 \ubcc0\uacbd"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"get"),"\uc774\ub098 ",(0,r.kt)("inlineCode",{parentName:"li"},"set")," \uc55e\uc5d0 \uac00\uc2dc\uc131 \ubcc0\uacbd\uc790\ub97c \ucd94\uac00\ud574\uc11c \uc811\uadfc\uc131\uc758 \uac00\uc2dc\uc131\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"// \ube44\uacf5\uac1c \uc138\ud130\uac00 \uc788\ub294 \ud504\ub85c\ud37c\ud2f0 \uc120\uc5b8\ud558\uae30\nclass LengthCounter {\n  var counter: Int = 0\n    private set\n  fun addWord(word: String) {\n    counter += word.length\n  }\n}\n")),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"43-\ucef4\ud30c\uc77c\ub7ec\uac00-\uc0dd\uc131\ud55c-\uba54\uc11c\ub4dc-\ub370\uc774\ud130-\ud074\ub798\uc2a4\uc640-\ud074\ub798\uc2a4-\uc704\uc784"},"4.3 \ucef4\ud30c\uc77c\ub7ec\uac00 \uc0dd\uc131\ud55c \uba54\uc11c\ub4dc: \ub370\uc774\ud130 \ud074\ub798\uc2a4\uc640 \ud074\ub798\uc2a4 \uc704\uc784"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc740 \uc720\uc6a9\ud55c \uba54\uc11c\ub4dc\ub97c \uc790\ub3d9\uc73c\ub85c \ub9cc\ub4e4\uc5b4\uc8fc\ub294 \uc608\uc640 \ud074\ub798\uc2a4 \uc704\uc784 \ud328\ud134\uc744 \uc544\uc8fc \uac04\ub2e8\ud558\uac8c \uc4f8 \uc218 \uc788\uac8c \ud574\uc90d\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"431-\ubaa8\ub4e0-\ud074\ub798\uc2a4\uac00-\uc815\uc758\ud574\uc57c-\ud558\ub294-\uba54\uc11c\ub4dc"},"4.3.1 \ubaa8\ub4e0 \ud074\ub798\uc2a4\uac00 \uc815\uc758\ud574\uc57c \ud558\ub294 \uba54\uc11c\ub4dc"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc790\ubc14\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \ucf54\ud2c0\ub9b0 \ud074\ub798\uc2a4\ub3c4 ",(0,r.kt)("inlineCode",{parentName:"li"},"toString, equals, hashCode")," \ub4f1\uc744 \uc624\ubc84\ub77c\uc774\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},'class Client(val name: String, val postalCode: Int) {\n  // equals\n  override fun equals(other: Any?): Boolean {\n    if(other == null || other !is Client)\n      return false\n    return name == other.name && postalCode == other.postalCode\n  }\n\n  // toString\n  override fun toString() = "client(name=$name, postalCode=$postalCode)"\n\n  // hashCode\n  override fun hashCode(): Int = name.hashCode() * 31 + postalCode\n}\n')),(0,r.kt)("h3",{id:"432-\ub370\uc774\ud130-\ud074\ub798\uc2a4-\ubaa8\ub4e0-\ud074\ub798\uc2a4\uac00-\uc815\uc758\ud574\uc57c-\ud558\ub294-\uba54\uc11c\ub4dc-\uc790\ub3d9-\uc0dd\uc131"},"4.3.2 \ub370\uc774\ud130 \ud074\ub798\uc2a4: \ubaa8\ub4e0 \ud074\ub798\uc2a4\uac00 \uc815\uc758\ud574\uc57c \ud558\ub294 \uba54\uc11c\ub4dc \uc790\ub3d9 \uc0dd\uc131"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"data class Client(val name: String, val postalCode: Int)\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc790\ubc14\uc5d0\uc11c \uc694\uad6c\ud558\ub294 \ubaa8\ub4e0 \uba54\uc11c\ub4dc\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\uc778\uc2a4\ud134\uc2a4 \uac04 \ube44\uad50\ub97c \uc704\ud55c equals"),(0,r.kt)("li",{parentName:"ul"},"Hashmap\uacfc \uac19\uc740 \ud574\uc2dc \uae30\ubc18 \ucee8\ud14c\uc774\ub108\uc5d0\uc11c \ud0a4\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 hashCode"),(0,r.kt)("li",{parentName:"ul"},"\ud074\ub798\uc2a4\uc758 \uac01 \ud544\ub4dc\ub97c \uc120\uc5b8 \uc21c\uc11c\ub300\ub85c \ud45c\uc2dc\ud558\ub294 \ubb38\uc790\uc5f4 \ud45c\ud604\uc744 \ub9cc\ub4e4\uc5b4\uc8fc\ub294 toString")))),(0,r.kt)("h4",{id:"\ub370\uc774\ud130-\ud074\ub798\uc2a4\uc640-\ubd88\uba74\uc131-copy-\uba54\uc11c\ub4dc"},"\ub370\uc774\ud130 \ud074\ub798\uc2a4\uc640 \ubd88\uba74\uc131: copy() \uba54\uc11c\ub4dc"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ub370\uc774\ud130 \ud074\ub798\uc2a4\uc758 \ud504\ub85c\ud37c\ud2f0\uac00 \uaf2d val\uc77c \ud544\uc694\ub294 \uc5c6\uc73c\ub098, \ub370\uc774\ud130 \ud074\ub798\uc2a4\uc758 \ubaa8\ub4e0 \ud504\ub85c\ud37c\ud2f0\ub97c \uc77d\uae30 \uc804\uc6a9\uc73c\ub85c \ub9cc\ub4e4\uc5b4\uc11c \ub370\uc774\ud130 \ud074\ub798\uc2a4\ub97c \ubd88\ubcc0 \ud074\ub798\uc2a4\ub85c \ub9cc\ub4dc\ub294 \uac83\uc774 \uad8c\uc7a5\ub429\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\uc774 \ub300\ud45c\uc801\uc778 \uc608\uc2dc\ub85c ",(0,r.kt)("inlineCode",{parentName:"li"},"copy"),"\uba54\uc11c\ub4dc\uc774\uba70 \uac1d\uccb4\ub97c \ubcf5\uc0ac\ud558\uba74\uc11c \uc77c\ubd80 \ud504\ub85c\ud37c\ud2f0\ub97c \ubc14\uafc0 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},'val lee = Client("lee", 4122)\nprintln(lee.copy(postalCode = 4000))\n')),(0,r.kt)("h3",{id:"433-\ud074\ub798\uc2a4-\uc704\uc784-by-\ud0a4\uc6cc\ub4dc-\uc0ac\uc6a9"},"4.3.3 \ud074\ub798\uc2a4 \uc704\uc784: by \ud0a4\uc6cc\ub4dc \uc0ac\uc6a9"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ub300\uaddc\ubaa8 \uac1d\uccb4\uc9c0\ud5a5 \uc2dc\uc2a4\ud15c\uc744 \uc124\uacc4\ud560 \ub54c \uc2dc\uc2a4\ud15c\uc744 \ucde8\uc57d\ud558\uac8c \ud558\ub294 \ubb38\uc81c\ub294 \ubcf4\ud1b5 ",(0,r.kt)("strong",{parentName:"li"},"\uad6c\ud604 \uc0c1\uc18d(implementation inheritance)")," \uc5d0 \uc758\ud574 \ubc1c\uc0dd\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ud558\uc704 \ud074\ub798\uc2a4\uac00 \uc0c1\uc704 \ud074\ub798\uc2a4\uc758 \uba54\uc11c\ub4dc \uc911 \uc77c\ubd80\ub97c \uc624\ubc84\ub77c\uc774\ub4dc\ud558\uba74 \ud558\uc704 \ud074\ub798\uc2a4\ub294 \uc0c1\uc704 \ud074\ub798\uc2a4\uc758 \uc138\ubd80 \uad6c\ud604 \uc0ac\ud56d\uc5d0 \uc758\uc874\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc740 \uc704\uc758 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uae30\ubcf8\uc801\uc73c\ub85c \ud074\ub798\uc2a4\ub97c ",(0,r.kt)("inlineCode",{parentName:"li"},"final"),"\ub85c \ucde8\uae09\ud569\ub2c8\ub2e4.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\uc0c1\uc18d\uc744 \uc5fc\ub450\uc5d0 \ub450\uace0 open \ubcc0\uacbd\uc790\ub85c \uc5f4\uc5b4\ub454 \ud074\ub798\uc2a4\ub9cc \ud655\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."))),(0,r.kt)("li",{parentName:"ul"},"\uc0c1\uc18d\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\ub294 \ud074\ub798\uc2a4\uc5d0 \uc0c8\ub85c\uc6b4 \ub3d9\uc791\uc744 \ucd94\uac00\ud560 \ub54c\uac00 \uc788\uc73c\uba70 \uc774\ub54c ",(0,r.kt)("inlineCode",{parentName:"li"},"\ub370\ucf54\ub808\uc774\ud130(Decorator)")," \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\uc0c1\uc18d\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\ub294 \ud074\ub798\uc2a4 \ub300\uc2e0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc0c8\ub85c\uc6b4 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\ub418 \uae30\uc874 \ud074\ub798\uc2a4\uc640 \uac19\uc740 \uc778\ud130\ud398\uc774\uc2a4\ub97c \ub370\ucf54\ub808\uc774\ud130\uac00 \uc81c\uacf5\ud558\uac8c \ub9cc\ub4e4\uace0, \uae30\uc874 \ud074\ub798\uc2a4\ub97c \ub370\ucf54\ub808\uc774\ud130 \ub0b4\ubd80\uc5d0 \ud544\ub4dc\ub85c \uc720\uc9c0\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\uc0c8\ub85c \uc815\uc758\ud574\uc57c \ud558\ub294 \uae30\ub2a5\uc740 \ub370\ucf54\ub808\uc774\ud130\uc758 \uba54\uc11c\ub4dc\uc5d0 \uc0c8\ub85c \uc815\uc758\ud558\uace0 \uae30\uc874 \uae30\ub2a5\uc774 \uadf8\ub300\ub85c \ud544\uc694\ud55c \ubd80\ubd84\uc740 \ub370\ucf54\ub808\uc774\ud130\uc758 \uba54\uc11c\ub4dc\uac00 \uae30\uc874 \ud074\ub798\uc2a4\uc758 \uba54\uc11c\ub4dc\uc5d0\uac8c \uc694\uccad\uc744 \uc804\ub2ec"),"\ud569\ub2c8\ub2e4."))),(0,r.kt)("li",{parentName:"ul"},"by \ud0a4\uc6cc\ub4dc\ub97c \ud1b5\ud574 \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \ub300\ud55c \uad6c\ud604\uc744 \ub2e4\ub978 \uac1d\uccb4\uc5d0 \uc704\uc784\uc911\uc744 \uba85\uc2dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"class DelegatingCollection<T> {\n  innerList: Collection<T> = ArrayList<T>()\n} : Collection<T> by innerList()\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ubd88\ud544\uc694\ud55c \uba54\uc11c\ub4dc \uc815\uc758\ub97c \uc704\ucc98\ub7fc \uc5c6\uc568 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"
1class CountingSet<T> {\n  val innerSet: MutableCollection<T> = HashSet<T>()\n} : MutableCollection<T> by innerSet {\n  var objectAdded = 0\n  override fun add(element: T): Boolean {\n    objectsAdded++\n    return innerSet.add(element)\n  }\n  override fun addAll(c: Collection<T>): Boolean {\n    objectsAdded += c.size\n    return innerSet.addAll(c)\n  }\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc774 \uacbd\uc6b0\ub294 \uad6c\ud604 \ubc29\uc2dd\uc5d0 \ub300\ud55c \uc758\uc874\uad00\uacc4\uac00 \uc0dd\uae30\uc9c0 \uc54a\ub294 \uc7a5\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"44-object-\ud074\ub798\uc2a4-\ud074\ub798\uc2a4-\uc120\uc5b8\uacfc-\uc778\uc2a4\ud134\uc2a4-\uc0dd\uc131"},"4.4 object \ud074\ub798\uc2a4: \ud074\ub798\uc2a4 \uc120\uc5b8\uacfc \uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"object \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud558\ub294 \uc5ec\ub7ec \uc0c1\ud669\uc744 \uc0b4\ud3b4\ubd10\uc57c\ud569\ub2c8\ub2e4.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\uac1d\uccb4 \uc120\uc5b8(object declaration)"),(0,r.kt)("li",{parentName:"ul"},"\ub3d9\ubc18 \uac1d\uccb4(companion object)"),(0,r.kt)("li",{parentName:"ul"},"\uac1d\uccb4 \uc2dd\uc740 \uc790\ubc14\uc758 \ubb34\uba85 \ub0b4\ubd80 \ud074\ub798\uc2a4(anonymous inner class) \ub300\uc2e0 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.")))),(0,r.kt)("h3",{id:"441-\uac1d\uccb4-\uc120\uc5b8-\uc2f1\uae00\ud134\uc744-\uc27d\uac8c-\ub9cc\ub4e4\uae30"},"4.4.1 \uac1d\uccb4 \uc120\uc5b8: \uc2f1\uae00\ud134\uc744 \uc27d\uac8c \ub9cc\ub4e4\uae30"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uac1d\uccb4\uc9c0\ud5a5 \uc2dc\uc2a4\ud15c\uc744 \uc124\uacc4\ud558\ub2e4 \ubcf4\uba74 \uc778\uc2a4\ud134\uc2a4\uac00 \ud558\ub098\ub9cc \ud544\uc694\ud55c \ud074\ub798\uc2a4\uac00 \uc720\uc6a9\ud55c \uacbd\uc6b0\uac00 \ub9ce\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc740 ",(0,r.kt)("inlineCode",{parentName:"li"},"\uac1d\uccb4 \uc120\uc5b8")," \uae30\ub2a5\uc744 \ud1b5\ud574 \uc2f1\uae00\ud134\uc744 \uc5b8\uc5b4\uc5d0\uc11c \uae30\ubcf8 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\uac1d\uccb4 \uc120\uc5b8\uc740 \ud074\ub798\uc2a4 \uc120\uc5b8\uacfc \uadf8 \ud074\ub798\uc2a4\uc5d0 \uc18d\ud55c \ub2e8\uc77c \uc778\uc2a4\ud134\uc2a4\uc758 \uc120\uc5b8\uc744 \ud569\uce5c \uc120\uc5b8\uc785\ub2c8\ub2e4.")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"// \uac1d\uccb4 \uc120\uc5b8\uc744 \uc0ac\uc6a9\ud574 Comparator \uad6c\ud604\nobject CaseInsensitiveFileComparator : Comparator<File> {\n  override fun compare(file1: File, file2: File): Int {\n    return file1.path.
1compareTo(file2.path, ignoreCase = true)\n  }\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\uc2f1\uae00\ud134 \ud328\ud134\uacfc \ub9c8\ucc2c\uac00\uc9c0 \uc774\uc720\ub85c \ub300\uaddc\ubaa8 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc2dc\uc2a4\ud15c\uc5d0\uc11c\ub294 \uac1d\uccb4 \uc120\uc5b8\uc774 \ud56d\uc0c1 \uc801\ud569\ud558\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"data class Person(val name: String) {\n  object NameComparator : Comparator<Person> {\n    override fun compare(p1: Person, p2: Person): Int = p1.name.compareTo(p2.name)\n  }\n}\n")),(0,r.kt)("h3",{id:"442-\ub3d9\ubc18-\uac1d\uccb4-\ud329\ud1a0\ub9ac-\uba54\uc11c\ub4dc\uc640-\uc815\uc801-\uba64\ubc84\uac00-\ub4e4\uc5b4\uac08-\uc7a5\uc18c"},"4.4.2 \ub3d9\ubc18 \uac1d\uccb4: \ud329\ud1a0\ub9ac \uba54\uc11c\ub4dc\uc640 \uc815\uc801 \uba64\ubc84\uac00 \ub4e4\uc5b4\uac08 \uc7a5\uc18c"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0 \ud074\ub798\uc2a4 \uc548\uc5d0\ub294 \uc815\uc801\uc778 \uba64\ubc84\uac00 \uc5c6\uc73c\uba70 \uc790\ubc14\uc758 static \ud0a4\uc6cc\ub4dc\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2a4\ube48\ub2e4. \ub300\uc2e0 \ud328\ud0a4\uc9c0 \uc218\uc900\uc758 \ucd5c\uc0c1\uc704 \ud568\uc218\uc640 \uac1d\uccb4 \uc120\uc5b8\uc744 \ud65c\uc6a9\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ucd5c\uc0c1\uc704 \ud568\uc218\ub294 private \ud074\ub798\uc2a4\uc5d0 \uc811\uadfc\ud560 \uc218 \uc5c6\uc2a4\ube48\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ub0b4\ubd80 \uc815\ubcf4\uc5d0 \uc811\uadfc\uc774 \ud544\uc694\ud55c \uacbd\uc6b0 \uc911\ucca9\ub41c \uac1d\uccb4 \uc120\uc5b8\uc758 \uba64\ubc84 \ud568\uc218\ub85c \uc815\uc758\ud574\uc57c \ud569\ub2c8\ub2e4.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\ub300\ud45c\uc801\uc778 \uc608\uc2dc\ub85c \ud329\ud1a0\ub9ac \uba54\uc11c\ub4dc\ub97c \uc608\uc2dc\ub85c \ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"// \ubd80 \uc0dd\uc131\uc790\ub97c \ud329\ud1a0\ub9ac \uba54\uc11c\ub4dc\ub85c \ub300\uc2e0\ud558\uae30\nclass User private constructor(val nickname: String) {  // \uc8fc \uc0dd\uc131\uc790\ub97c \ube44\uacf5\uac1c\ub85c \ub9cc\ub4e6\n  companion object {  // \ub3d9\ubc18 \uac1d\uccb4 \uc120\uc5b8\n    fun newSubscribingUser(email: String) = User(email.substringBefore('@'))\n    fun newFacebookUser(accountId: Int) = User(getFacebookName(accountId))\n  }\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\ud329\ud1a0\ub9ac \uba54\uc11c\ub4dc"),"\ub294 \ubaa9\uc801\uc5d0 \ub530\ub77c \uc774\ub984\uc744 \uc815\ud560 \uc218 \uc788\uc73c\uba70, \uc120\uc5b8\ub41c \ud074\ub798\uc2a4\uc758 \ud558\uc704 \ud074\ub798\uc2a4 \uac1d\uccb4\ub3c4 \ubc18\ud658\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.")),(0,r.kt)("h3",{id:"443-\ub3d9\ubc18-\uac1d\uccb4\ub97c-\uc77c\ubc18-\uac1d\uccb4\ucc98\ub7fc-\uc0ac\uc6a9"},"4.4.3 \ub3d9\ubc18 \uac1d\uccb4\ub97c \uc77c\ubc18 \uac1d\uccb4\ucc98\ub7fc \uc0ac\uc6a9"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ub3d9\ubc18 \uac1d\uccb4\ub294 \ud074\ub798\uc2a4 \uc548\uc5d0 \uc815\uc758\ub41c \uc77c\ubc18 \uac1d\uccb4\uc785\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"class Person(val name: String) {\n  companion object Loader { // \ub3d9\ubc18 \uac1d\uccb4\uc5d0 \uc774\ub984\uc744 \ubd99\uc785\ub2c8\ub2e4.\n    fun fromJson(jsonText: String): Person = ...\n  }\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ub3d9\ubc18 \uac1d\uccb4\ub3c4 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"interface JSONFactory<T> {\n  fun fromJSON(jsonText: String): T\n}\nclass Person(val name: String) {\n  companion object : JSONFactory<Person> { // \ub3d9\ubc18 \uac1d\uccb4\uac00 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud569\ub2c8\ub2e4.\n    override fun fromJson(jsonText: String): Person = ...\n  }\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ud074\ub798\uc2a4\uc5d0 \ub3d9\ubc18 \uac1d\uccb4\uac00 \uc788\uc73c\uba74 \uadf8 \uac1d\uccb4 \uc548\uc5d0 \ud568\uc218\ub97c \uc815\uc758\ud568\uc73c\ub85c\uc368 \ud074\ub798\uc2a4\uc5d0 \ub300\ud574 \ud638\ucd9c\ud560 \uc218 \uc788\ub294 \ud655\uc7a5 \ud568\uc218\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"// \ube44\uc9c0\ub2c8\uc2a4 \ubaa8\ub4c8\nclass Person(val firstName: String, val lastName: String) {\n  companion object {}\n}\n\n// \ud074\ub77c\uc774\uc5b8\ud2b8/\uc11c\ubc84 \ud1b5\uc2e0 \ubaa8\ub4c8\nfun Person.Companion.fromJSON(json: String): Person { // \ud655\uc7a5\ud568\uc218 \uc120\uc5b8\n  ...\n}\n")),(0,r.kt)("h3",{id:"444-\uac1d\uccb4-\uc2dd-\ubb34\uba85-\ub0b4\ubd80-\ud074\ub798\uc2a4\ub97c-\ub2e4\ub978-\ubc29\uc2dd\uc73c\ub85c-\uc791\uc131"},"4.4.4 \uac1d\uccb4 \uc2dd: \ubb34\uba85 \ub0b4\ubd80 \ud074\ub798\uc2a4\ub97c \ub2e4\ub978 \ubc29\uc2dd\uc73c\ub85c \uc791\uc131"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ubb34\uba85 \uac1d\uccb4(anonymous object)\ub97c \uc815\uc758\ud560 \ub54c object \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"// \ubb34\uba85 \uac1d\uccb4\ub85c \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108 \uad6c\ud604\nwindow.addM
1ouseListener(  // MouseAdapter\ub97c \ud655\uc7a5\ud558\ub294 \ubb34\uba85 \uac1d\uccb4\ub97c \uc120\uc5b8\ud569\ub2c8\ub2e4.\n  object : MouseAdapter() {\n    // MouseAdapter\uc758 \uba54\uc11c\ub4dc \uc624\ubc84\ub77c\uc774\ub4dc\n    override fun mouseClicked(e: MouseEvent) {\n      // ...\n    }\n    override fun mouseEntered(e: MouseEvent) {\n      // ...\n    }\n  }\n)\n")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\uac1d\uccb4 \uc120\uc5b8\uacfc \ub2ec\ub9ac \ubb34\uba85 \uac1d\uccb4\ub294 \uc2f1\ud074\ud134\uc774 \uc544\ub2c8\uba70, \uac1d\uccb4 \uc2dd\uc774 \uc4f0\uc77c \ub54c\ub9c8\ub2e4 \uc0c8\ub85c\uc6b4 \uc778\uc2a4\ud134\uc2a4\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ubb34\uba85 \uac1d\uccb4 \uc2dd \uc548\uc5d0\uc11c \ubcc0\uc218\uc758 \uac12\uc744 \ubcc0\uacbd\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-kt"},"fun countClicks(window: Window) {\n  var clickCount = 0\n  window.addMouseListener(object: MouseAdapter() {\n    override fun mouseClicked(e: MouseEvent) {\n      clickCount++\n    }\n  })\n}\n")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\uac1d\uccb4 \uc2dd\uc740 \ubb34\uba85 \uac1d\uccb4 \uc548\uc5d0\uc11c \uc5ec\ub7ec \uba54\uc11c\ub4dc\ub97c \uc624\ubc84\ub77c\uc774\ub4dc\ud574\uc57c\ud558\ub294 \uacbd\uc6b0\uc5d0 \uc720\uc6a9\ud569\ub2c8\ub2e4.")),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"45-\uc694\uc57d"},"4.5 \uc694\uc57d"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc758 \uc778\ud130\ud398\uc774\uc2a4\ub294 \ub514\ud3f4\ud2b8 \uad6c\ud604\uc744 \ud3ec\ud568\ud560 \uc218 \uc788\uace0 \ud504\ub85c\ud37c\ud2f0\ub3c4 \ud3ec\ud568\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ubaa8\ub4e0 \ucf54\ud2c0\ub9b0 \uc120\uc5b8\uc740 \uae30\ubcf8\uc801\uc73c\ub85c final\uc774\uba70 public\uc785\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\uc120\uc5b8\uc774 final\uc774 \ub418\uc9c0 \uc54a\uac8c \ub9cc\ub4e4\ub824\uba74 \uc55e\uc5d0 open\uc744 \ubd99\uc5ec\uc57c\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"internal \uc120\uc5b8\uc740 \uac19\uc740 \ubaa8\ub4c8\uc548\uc5d0\uc11c\ub9cc \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\uc911\ucca9 \ud074\ub798\uc2a4\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \ub0b4\ubd80 \ud074\ub798\uc2a4\uac00 \uc555\ub2c8\ub2e4. \ubc14\uae65\ucabd \ud074\ub798\uc2a4\uc5d0 \ub300\ud55c \ucc38\uc870\ub97c \uc911\ucca9 \ud074\ub798\uc2a4 \uc548\uc5d0 \ud3ec\ud568\uc2dc\ud0a4\ub824\uba74 inner \ud0a4\uc6cc\ub4dc\ub97c \uc911\ucca9 \ud074\ub798\uc2a4 \uc120\uc5b8 \uc55e\uc5d0 \ubd99\uc5ec\uc11c \ub0b4\ubd80 \ud074\ub798\uc2a4\ub85c \ub9cc\ub4e4\uc5b4\uc57c\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"sealed \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud558\ub824\uba74 \ubc18\ub4dc\uc2dc \ubd80\ubaa8 \ud074\ub798\uc2a4 \uc815\uc758 \uc548\uc5d0 \uc911\ucca9 \ud074\ub798\uc2a4\ub85c \uc815\uc758\ud574\uc57c\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ucd08\uae30\ud654 \ud074\ub85d\uacfc \ubd80 \uc0dd\uc131\uc790\ub97c \ud65c\uc6a9\ud574 \ud074\ub798\uc2a4 \uc778\uc2a4\ud134\uc2a4\ub97c \ub354 \uc720\uc5f0\ud558\uac8c \ucd08\uae30\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"field \uc2dd\ubcc4\uc790\ub97c \ud1b5\ud574 \ud504\ub85c\ud37c\ud2f0 \uc811\uadfc\uc790(\uac8c\ud130/\uc138\ud130) \uc548\uc5d0\uc11c \ud504\ub85c\ud37c\ud2f0\uc758 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub294 \ub370 \uc4f0\uc774\ub294 \ub4b7\ubc1b\uce68\ud558\ub294 \ud544\ub4dc\ub97c \ucc38\uc870\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ub370\uc774\ud130 \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uba74 \ucef4\ud30c\uc77c\ub7ec\uac00 equals, hashCode, toString, copy \ub4f1\uc758 \uba54\uc11c\ub4dc\ub97c \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud574\uc90d\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ud074\ub798\uc2a4 \uc704\uc784\uc744 \uc0ac\uc6a9\ud558\uba74 \uc704\uc784 \ud328\ud134\uc744 \uad6c\ud604\ud560 \ub54c \ud544\uc694\ud55c \uc218\ub9ce\uc740 \uc131\uac00\uc2e0 \uc900\ube44 \ucf54\ub4dc\ub97c \uc904\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\uac1d\uccb4 \uc120\uc5b8\uc744 \uc0ac\uc6a9\ud558\uba74 \ucf54\ud2c0\ub9b0\ub2f5\uac8c \uc2f1\uae00\ud134 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ub3d9\ubc18 \uac1d\uccb4\ub294 \uc790\ubc14\uc758 \uc815\uc801 \uba54\uc11c\ub4dc\uc640 \ud544\ub4dc \uc815\uc758\ub97c \ub300\uc2e0\ud569\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ub3d9\ubc18 \uac1d\uccb4\ub3c4 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."),(0,r.kt)("li",{parentName:"ul"},"\ucf54\ud2c0\ub9b0\uc758 \uac1d\uccb4 \uc2dd\uc740 \uc790\ubc14\uc758 \ubb34\uba85 \ub0b4\ubd80 \ud074\ub798\uc2a4\ub97c \ub300\uc2e0\ud569\ub2c8\ub2e4.")))}k.isMDXComponent=!0}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.