{"id":45952,"date":"2022-03-11T17:04:24","date_gmt":"2022-03-11T08:04:24","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=45952"},"modified":"2022-03-11T17:04:27","modified_gmt":"2022-03-11T08:04:27","slug":"%ec%9d%b4%ed%8e%99%ed%8b%b0%eb%b8%8c-%ec%bd%94%ed%8b%80%eb%a6%b0-%ec%9a%94%ec%95%bd-%ed%81%b4%eb%9e%98%ec%8a%a4-%ec%84%a4%ea%b3%84","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=45952","title":{"rendered":"[\uc774\ud399\ud2f0\ube0c \ucf54\ud2c0\ub9b0 \uc694\uc57d] \ud074\ub798\uc2a4 \uc124\uacc4"},"content":{"rendered":"\n<p>\ucf54\ud2c0\ub9b0\uc5d0\uc11c \uc790\uc8fc \uc0ac\uc6a9\ud558\ub294 \ud074\ub798\uc2a4 \ud328\ud134\uc744 \uc0b4\ud3b4\ubcf4\ub3c4\ub85d \ud55c\ub2e4. \uc774\ubc88 \uc7a5\uc5d0\uc11c\ub294 \ub2e4\uc74c\uc758 \ub0b4\uc6a9\uc5d0 \ub300\ud574\uc11c \uc0dd\uac01 \ud574 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<ul><li>&#8216;\uc0c1\uc18d&#8217;\uc744 \ud65c\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0<\/li><li>&#8216;data \ud074\ub798\uc2a4&#8217;\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0<\/li><li>\ud558\ub098\uc758 \uba54\uc11c\ub4dc\ub97c \uac16\ub294 \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud568\uc218 \ud0c0\uc785\uc73c\ub85c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0<\/li><li>equals, hashCode \uadf8\ub9ac\uace0 compareTo\uc758 \uaddc\uc57d<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\uc0c1\uc18d\ubcf4\ub2e4\ub294 \ucef4\ud3ec\uc9c0\uc158 \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p>\uc0c1\uc18d\uc740 \uacc4\uce35 \uad6c\uc870\ub97c \ub9cc\ub4e4\uae30 \uc704\ud574 \uc0ac\uc6a9\ud55c\ub2e4. \uacc4\uce35 \uac04 \uad00\uacc4\uac00 \uba85\ud655\ud558\uc9c0 \uc54a\uc744 \ub54c \uc0c1\uc18d\uc744 \uc0ac\uc6a9\ud558\uba74 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \ub2e8\uc21c\ud788 \ucf54\ub4dc \ucd94\ucd9c \ub610\ub294 \uc7ac\uc0ac\uc6a9\uc744 \uc704\ud574 \uc0c1\uc18d\uc744 \uc0ac\uc6a9\ud558\uae30 \ubcf4\ub2e4\ub294 <strong>\ucef4\ud3ec\uc9c0\uc158<\/strong>\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uac04\ub2e8\ud55c \ud589\uc704(\ud568\uc218)\uc758 \uc7ac\uc0ac\uc6a9<\/h3>\n\n\n\n<p>\ub9f9\ubaa9\uc801\uc778 \uc0c1\uc18d\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \ub2e8\uc810\uc744 \uac16\ub294\ub2e4.<\/p>\n\n\n\n<ul><li>\uc0c1\uc18d\uc744 \ud1b5\ud574 \ud589\uc704\ub97c \ucd94\ucd9c\ud558\ub2e4\ubcf4\uba74 \ub9ce\uc740 \ud568\uc218\ub97c \uac16\ub294 \uac70\ub300\ud55c BaseXXX \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uac8c \ub41c\ub2e4. <\/li><li>\uc0c1\uc18d\uc740 \ud074\ub798\uc2a4\uc758 \ubaa8\ub4e0 \uac83\uc744 \uac00\uc838\uc624\ubbc0\ub85c, \ubd88\ud544\uc694\ud55c \ud568\uc218\ub97c \uac16\ub294 \ud074\ub798\uc2a4\uac00 \ub418\uae30\ub3c4 \ud55c\ub2e4.<\/li><li>\uba54\uc11c\ub4dc(\ud568\uc218)\uc758 \uc791\ub3d9\ubc29\uc2dd\uc744 \uc774\ud574\ud558\uae30 \uc704\ud574 \uc218\ud37c\ud074\ub798\uc2a4\ub97c \uc5ec\ub7ec\ubc88 \ud655\uc778\ud574\uc57c \ud560 \uc218\ub3c4 \uc788\ub2e4.<\/li><\/ul>\n\n\n\n<p>\uc774\ub7ec\ud55c \ub2e8\uc810\ub4e4 \uc911 \ud558\ub098\ub77c\ub3c4 \ud574\ub2f9 \ub41c\ub2e4\uba74, \ucef4\ud3ec\uc9c0\uc158\uc744 \ud65c\uc6a9\ud574\ubcf4\uc790.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>\ucef4\ud3ec\uc9c0\uc158(Composition)\uc774\ub780 \uac1d\uccb4\ub97c \ud504\ub85c\ud37c\ud2f0\ub85c \uac16\uace0, \ud568\uc218\ub97c \ud638\ucd9c\ud558\ub294 \ud615\ud0dc\ub85c \uc7ac\uc0ac\uc6a9 \ud558\ub294 \uac83\uc744 \uc758\ubbf8\ud55c\ub2e4.<\/p><\/blockquote>\n\n\n\n<p>\ub2e4\uc74c \uc608\uc81c \ucf54\ub4dc\ub294 \uc0c1\uc18d \uad6c\uc870\ub97c \ucef4\ud3ec\uc9c0\uc158 \uad6c\uc870\ub85c \ubcc0\uacbd\ud55c \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p><strong>\uc0c1\uc18d \uad6c\uc870<\/strong>\ub85c \ud47c \ucf54\ub4dc<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>abstract class Loader {\n\n    abstract fun innerLoad()\n    \n    fun load(){\n        \/\/ \ud504\ub85c\uadf8\ub808\uc2a4\ubc14 \ub178\ucd9c\n        innerLoad()\n        \/\/ \ud504\ub85c\uadf8\ub808\uc2a4\ubc14 \uc228\uae40\n    }\n}\n\nclass ProfileLoader: <meta charset=\"utf-8\">Loader() {\n    \n    override fun innerLoad(){\n        \/\/ \ud504\ub85c\ud544 \ub85c\ub4dc\n    }\n}\n\nclass ImageLoader: <meta charset=\"utf-8\">Loader() {\n    \n    override fun innerLoad(){\n        \/\/ \uc774\ubbf8\uc9c0 \ub85c\ub4dc\n    }\n}<\/code><\/pre>\n\n\n\n<p>\uc0c1\uc18d \ub300\uc2e0 <strong>\ucef4\ud3ec\uc9c0\uc158<\/strong> \uc0ac\uc6a9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Progress {\n\n    fun show() {...} \n    \n    fun hide() {...}\n}\n\nclass ProfileLoader: <meta charset=\"utf-8\">Loader() {\n\n    val progress = Progress()\n    \n    override fun innerLoad(){\n        progress.show()\n        \/\/ \ud504\ub85c\ud544 \ub85c\ub4dc\n<meta charset=\"utf-8\">        progress.hide()\n    }\n}\n\nclass ImageLoader: <meta charset=\"utf-8\">Loader() {\n<meta charset=\"utf-8\">\n    val progress = Progress()\n    \n    override fun innerLoad(){\n<meta charset=\"utf-8\">        progress.show()\n        \/\/ \uc774\ubbf8\uc9c0 \ub85c\ub4dc\n<meta charset=\"utf-8\">        progress.hide()\n    }\n}<\/code><\/pre>\n\n\n\n<p>\ucef4\ud3ec\uc9c0\uc158\uc744 \uc0ac\uc6a9\ud55c \ucf54\ub4dc\ub97c \ubcf4\uba74 \uae30\uc874 \uc0c1\uc18d\uad6c\uc870\uc5d0\uc11c \ubc97\uc5b4\ub098 progress \uac1d\uccb4\ub97c \ud568\uc218\ub0b4\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc0c1\uc18d\uc740 \ubaa8\ub4e0 \uac83\uc744 \uac00\uc838\uc628\ub2e4.<\/h3>\n\n\n\n<p>\uc0c1\uc18d\uc740 \uc218\ud37c \ud074\ub798\uc2a4\uc758 \ubaa8\ub4e0 \uac83\uc744 \uac00\uc838\uc628\ub2e4. \uadf8\ub7ec\ubbc0\ub85c <strong>\uacc4\uce35 \uad6c\uc870<\/strong>\ub97c \ub098\ud0c0 \ub0bc \ub54c \uad49\uc7a5\ud788 \uc88b\ub2e4. \ub2e4\uc74c \uc608\uc81c\ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>abstract class Dog {\n    open fun bark() { ... }\n<meta charset=\"utf-8\">    open fun sniff() { ... }\n}\n\/\/ \ub808\ube0c\ub77c\ub3c4 \ub9ac\ud2b8\ub9ac\ubc84\nclass Labrador: Dog()\n\n\/\/ \ub85c\ubd07 \uac1c\nclass RobotDog: Dog() {\n    override fun sniff(){\n        \/\/ \ub85c\ubd07\uac1c\ub294 \ub0c4\uc0c8 \ub9e1\ub294 \uae30\ub2a5(\ud589\uc704)\uc774 \uc5c6\uc73c\ubbc0\ub85c, \uc774 \ud568\uc218\ub294 \ubd88\ud544\uc694\ud55c \ud568\uc218\ub2e4.\n        \/\/ \uc774\ub294 \uc778\ud130\ud398\uc774\uc2a4 \ubd84\ub9ac \uc6d0\uce59 \ubc0f \ub9ac\uc2a4\ucf54\ud504 \uce58\ud658\uc6d0\uce59 \uc704\ubc18\uc774\ub2e4.\n    }\n}<\/code><\/pre>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc740 \ud074\ub798\uc2a4\uc758 \ub2e4\uc911\uc0c1\uc18d\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c, \uc704\uc758 \ub85c\ubd07\uac1c\uc758 \uacbd\uc6b0 \uc778\ud130\ud398\uc774\uc2a4\ub85c \b\uac1c\uc640 \ub85c\ubd07\uc774 \uac16\ub294 \ud2b9\uc131\uc744 \ucd94\uc0c1\ud654\ud55c \ub4a4 \uc774\ub97c \ubaa8\ub450 \uc0c1\uc18d\ud558\uc5ec RobotDog\ub97c \uad6c\ud604\ud558\uac70\ub098, \ucef4\ud3ec\uc9c0\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \uad6c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ucea1\uc290\ud654\ub97c \uae68\ub294 \uc0c1\uc18d<\/h3>\n\n\n\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 \ub0b4\ubd80\uc801\uc778 \uad6c\ud604 \ubc29\ubc95 \ubcc0\uacbd\uc5d0 \uc758\ud574 \ud074\ub798\uc2a4\uc758 \ucea1\uc290\ud654\uac00 \uae68\uc9c8 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class CounterSet&lt;T>: HashSet&lt;T>() {\n    var elementsAdded: Int = 0\n    private set\n    \n    override fun add(element: T): Boolean {\n        elementsAdded++\n        return super.add(element)\n    }\n    \n    override fun addAll(elements: Collection&lt;T>):Boolean {\n        elementsAdded+=elements.size\n        return super.addAll(elements)\n    }\n}\n\u200b\nfun main() = runBlocking {\n    val counterList = CounterSet&lt;String>()\n    counterList.addAll(listOf(\"A\",\"B\",\"C\")) \/\/ \uc544\uc774\ud15c 3\uac1c \ub123\uc5c8\ub294\ub370\n    print(counterList.elementsAdded) \/\/ \uacb0\uacfc\ub294 6\n}<\/code><\/pre>\n\n\n\n<p>\ucef4\ud3ec\uc9c0\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec CounterSet\ub0b4\ubd80\uc5d0\uc11c HashSet\uac1d\uccb4\ub97c \uad00\ub9ac\ud558\uac8c \ub418\uba74 \ubb38\uc81c\ub97c \ud574\uacb0\ud560 \uc218 \uc788\uc9c0\ub9cc, \uadf8\ub807\uac8c \ud558\uba74 \ub354\uc774\uc0c1 CounterSet\uc774 Set\uc774 \uc544\ub2c8\uac8c \ub41c\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \ub2e4\uc74c \uc608\uc81c\uc640 \uac19\uc774 \ub378\ub9ac\uac8c\uc774\uc158 \ud328\ud134\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class CounterSet&lt;T>(\n    private val <strong>innerSet<\/strong>: MutableSet&lt;T> = mutableSetOf()\n) : MutableSet&lt;T> by <strong>innerSet<\/strong>{\n\n    var elementsAdded: Int = 0\n        private set\n\n<meta charset=\"utf-8\">    override fun add(element: T): Boolean {\n        elementsAdded++\n        return innerSet.add(element)\n    }\n    \n    override fun addAll(elements: Collection&lt;T>):Boolean {\n        elementsAdded += elements.size\n        return innerSet.addAll(elements)\n    }\n\n}<\/code><\/pre>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc758 &#8216;by&#8217; \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud588\uae30\ub54c\ubb38\uc5d0 \ucf54\ub4dc\uac00 \uc9e7\uc544\uc9c4 \uac83\uc774\uc9c0, \ucef4\ud3ec\uc9c0\uc158 \uad6c\uc870 \ubc29\uc2dd\uc73c\ub85c \uad6c\ud604\uc2dc \uc624\ubc84\ub77c\uc774\ub4dc \ud55c \uba54\uc11c\ub4dc\uc5d0\uc11c \ub0b4\ubd80 \uac1d\uccb4\uc758 \uba54\uc11c\ub4dc\ub97c \ub378\ub9ac\uac8c\uc774\ud305 \ud558\ub294 \uacbd\uc6b0 \ud3ec\uc6cc\ub529 \uba54\uc11c\ub4dc\ub85c \ub2e4 \uad6c\ud604\ud574\uc918\uc57c\ud55c\ub2e4. \ucf54\ub4dc\ub294 \uae38\uc5b4\uc9c0\uc9c0\ub9cc  \uba85\ud655\ud558\uba70 \uac00\ub3c5\uc131\uc774 \uc88b. \uadf8\ub7ec\ubbc0\ub85c \ucf54\ub4dc\uac00 \uc9e7\uc740 \uac04\ub2e8\ud788 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub294 \uacbd\uc6b0\uc5d0\ub9cc \ucef4\ud3ec\uc9c0\uc158\uc744 \uc0ac\uc6a9\ud558\uc790. <\/p>\n\n\n\n<p>\ucef4\ud3ec\uc9c0\uc158\uc740 <strong>\uc7ac\uc0ac\uc6a9<\/strong>\ud558\uae30 \uc27d\uace0, \ub354 \ub9ce\uc740 <strong>\uc720\uc5f0\uc131<\/strong>\uc744 \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc624\ubc84\ub77c\uc774\ub529 \ud5c8\uc6a9 \ubc0f \uc81c\ud55c<\/h3>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \ud074\ub798\uc2a4\uc758 \uc0c1\uc18d\uacfc \uba54\uc11c\ub4dc\uc758 \uc624\ubc84\ub77c\uc774\ub4dc(\uc7ac\uc815\uc758)\ub97c \ub9c9\uc544\ub450\uc5c8\ub2e4. \uc624\ubc84\ub77c\uc774\ub4dc\ud558\uae30 \uc704\ud574\uc11c\ub294 \ud074\ub798\uc2a4 \uc774\ub984 \ub610\ub294 \ud568\uc218 \uc120\uc5b8 \uc55e\uc5d0 &#8216;open&#8217; \ud0a4\uc6cc\ub4dc\ub97c \ubd99\uc5ec\uc57c \ud55c\ub2e4. \uc11c\ube0c \ud074\ub798\uc2a4\uc758 \uc0c1\uc18d\uc744 \ub9c9\uace0 \uc2f6\uc740 \uacbd\uc6b0 final \ud0a4\uc6cc\ub4dc\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Loader\uc758 \uc0c1\uc18d\uacfc load \uba54\uc11c\ub4dc \uc7ac\uc815\uc758\ub97c \ud5c8\uc6a9\nopen class Loader{\n    open fun load() { ... }\n}\n\n\/\/ Loader\ub97c \uc0c1\uc18d, \uc11c\ube0c \ud074\ub798\uc2a4\ub97c \ud5c8\uc6a9, load\ub97c \uc7ac\uc815\uc758\nopen class ImageLoader: Loader() {\n    final override fun load(){...}\n}\n\n\/\/ load() \uc7ac\uc815\uc758 \ubd88\uac00\nclass ProfileImageLoader: ImageLoader(){\n    \/\/ \ucef4\ud30c\uc77c \uc624\ub958\n    override fun load(){...}\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ucef4\ud3ec\uc9c0\uc158\uacfc \uc0c1\uc18d\uc758 \ud2b9\uc9d5<\/h3>\n\n\n\n<ul><li>\ucef4\ud3ec\uc9c0\uc158\uc740 \uc548\uc804\ud558\ub2e4. \ub2e4\ub978 \ud074\ub798\uc2a4\uc758 \ub0b4\ubd80\uc801\uc778 \uad6c\ud604\uc5d0 \uc758\uc874\ud558\uc9c0 \uc54a\uace0, \uc678\ubd80\uc5d0\uc11c \uad00\ucc30\ub418\ub294 \ub3d9\uc791\uc5d0\ub9cc \uc758\uc874\ud55c\ub2e4.<\/li><li>\ucef4\ud3ec\uc9c0\uc158\uc740 \uc720\uc5f0\ud558\ub2e4. \ucf54\ud2c0\ub9b0 \ud074\ub798\uc2a4\ub294 \ub2e4\uc911 \uc0c1\uc18d\uc774 \ubd88\uac00\ud558\uba70, \ucef4\ud3ec\uc9c0\uc158\uc740 \uc5ec\ub7ec \ud074\ub798\uc2a4\ub97c \ub300\uc0c1\uc73c\ub85c \uc0ac\uc6a9 \uac00\ub2a5\ud558\ub2e4.<\/li><li>\ucef4\ud3ec\uc9c0\uc158\uc740 \uba85\uc2dc\uc801\uc774\ub2e4. \ub9ac\uc2dc\ubc84\ub97c \uba85\uc2dc\uc801\uc73c\ub85c \ud65c\uc6a9\ud560 \uc218 \ubc16\uc5d0 \uc5c6\uc73c\ubbc0\ub85c \uba54\uc11c\ub4dc\uac00 \uc5b4\ub514\uc5d0 \uc788\ub294\uc9c0 \ud655\uc2e4\ud788 \uc54c \uc218 \uc788\ub2e4.<\/li><li>\ucef4\ud3ec\uc9c0\uc158\uc740 \ubc88\uac70\ub86d\ub2e4. \uc0c1\uc18d\uc744 \uc0ac\uc6a9\ud560 \ub54c\ubcf4\ub2e4 \ucf54\ub4dc\ub97c \uc218\uc815\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\uac00 \ub354 \ub9ce\ub2e4.<\/li><li>\uc0c1\uc18d\uc740 \ub2e4\ud615\uc131\uc744 \ud65c\uc6a9\ud55c\ub2e4. \uc774\ub294 \uc591\ub0a0\uc758 \uac80\uc774\uba70, \uc0c1\uc18d\uc744 \ud560\uacbd\uc6b0 \uc218\ud37c\ud074\ub798\uc2a4\uc640 \uc11c\ube0c\ud074\ub798\uc2a4\uc758 \uaddc\uc57d\uc744 \uc798 \uc9c0\ucf1c\uc57c \ud55c\ub2e4.<\/li><\/ul>\n\n\n\n<p>\uc77c\ubc18 \uc801\uc778 \uacbd\uc6b0 \uc0c1\uc18d\ubcf4\ub2e4\ub294 \ucef4\ud3ec\uc9c0\uc158\uc744 \uba3c\uc800 \uace0\ub824\ud558\ub294 \uac83\uc774 \uc88b\ub2e4. <\/p>\n\n\n\n<p>\uc0c1\uc18d\uc744 \ud558\ub294 \uacbd\uc6b0 \uba85\ud655\ud558\uac8c &#8216;is-a&#8217; \uc778 \uacbd\uc6b0\ub97c \uace0\ub824\ud558\uc790 <\/p>\n\n\n\n<p>&#8220;Labrado <strong>is a<\/strong> Dog&#8221;\ub294 \uba85\ud655\ud558\uac8c \ucc38(true)\uc774\ub77c\uace0 \ub9d0\ud560 \uc218 \uc788\uc9c0\ub9cc &#8220;RobotDog <strong>is a<\/strong> Dog&#8221;\ub294 \ucc38 \ub610\ub294 \uac70\uc9d3(false)\uc774\ub77c\uace0 \uba85\ud655\ud558\uac8c \ub9d0\ud558\uae30 \uc560\ub9e4\ubaa8\ud638 \ud558\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \uba85\ud655\ud55c \uacc4\uce35 \uad6c\uc870\ub97c \uac16\uae30 \ud798\ub4e4\uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">data \ud55c\uc815\uc790 \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p>\ub370\uc774\ud130 \uc14b\uc744 \uc804\ub2ec\ud574\uc57c \ud560 \ub54c\uac00 \uc788\ub2e4. \uc774\ub54c data \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p>data \ud074\ub798\uc2a4\uc5d0\ub294 \uba87\uac00\uc9c0 \ud568\uc218\uac00 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub41c\ub2e4.<\/p>\n\n\n\n<ul><li>toString : \ud074\ub798\uc2a4 \uc774\ub984, \ubaa8\ub4e0 \ud504\ub85c\ud37c\ud2f0 \ucd9c\ub825<\/li><li>equals : \uae30\ubcf8 \uc0dd\uc131\uc790\uc758 \ud504\ub85c\ud37c\ud2f0\uac00 \uac19\uc740\uc9c0 \ud655\uc778<\/li><li>hashCode : \ube44\uad50\ud55c \ub450 \uac1d\uccb4\uac00 \ub3d9\ub4f1\ud558\ub2e4\uba74 \ub3d9\uc77c\ud55c \ubc84\ud0b7\uc544\uc774\ub514 \ubc18\ud658<\/li><li>copy : \uae30\ubcf8 \uc0dd\uc131\uc790 \ud504\ub85c\ud37c\ud2f0\uac00 \uac19\uc740 \uc0c8\ub85c\uc6b4 \uac1d\uccb4\ub85c (\uc595\uc740)\ubcf5\uc81c\ub97c \ud558\uba70, \ud504\ub85c\ud37c\ud2f0\ub97c \ubcc0\uacbd\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/li><li>componentN(component1, component2 \ub4f1) : \uc704\uce58\ub97c \uae30\ubc18\uc73c\ub85c \ud504\ub85c\ud37c\ud2f0\uc5d0 \uc811\uadfc\ud55c\ub2e4. <\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud29c\ud50c \ub300\uc2e0 \ub370\uc774\ud130 \ud074\ub798\uc2a4 \uc0ac\uc6a9\ud558\uae30<\/h3>\n\n\n\n<p>\ucf54\ud2c0\ub9b0\uc758 \ud29c\ud50c\uc740 Pair\uc640 Triple\uc774 \uc788\uc73c\uba70 Serializable\uc744 \uae30\ubc18\uc73c\ub85c \ub9cc\ub4e4\uc5b4 \uc9c4\ub2e4. \uba87\uac00\uc9c0 \ucf00\uc774\uc2a4\ub97c \uc81c\uc678\ud558\uba74 \uc77c\ubc18\uc801\uc778 \uc0c1\ud669\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \ud29c\ud50c \uc0ac\uc6a9\ubcf4\ub2e4\ub294 data \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4. \uc65c\ub0d0\ud558\uba74 Pair \ub610\ub294 Triple \uc2dc \ud504\ub85c\ud37c\ud2f0 \uc774\ub984\uc774 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \ud0c0\uc785\ub9cc \ubcf4\uace0 \uc778\uc9c0\ud558\uae30 \uc5b4\ub824\uc6b8 \uc218 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p>data \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc740 \ube44\uc6a9\uc774 \ud06c\uc9c0 \uc54a\uc73c\uba70, \uc881\uc740 \uc2a4\ucf54\ud504\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud558\uace0 \uc2f6\ub2e4\uba74 \uac00\uc2dc\uc131\uc744 \uc81c\ud55c\ud558\uba74 \ub41c\ub2e4. \ud29c\ud50c\ubcf4\ub2e4 data \ud074\ub798\uc2a4\uac00 \uac16\ub294 \uc7a5\uc810\uc774 \ub9ce\uc73c\ub2c8 \uc801\uadf9\uc801\uc73c\ub85c \ud65c\uc6a9\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc5f0\uc0b0 \ub610\ub294 \uc561\uc158\uc744 \uc804\ub2ec \ud560 \ub54c\ub294 \uc778\ud130\ud398\uc774\uc2a4 \ub300\uc2e0 \ud568\uc218 \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p>\uc5f0\uc0b0 \ub610\ub294 \uc561\uc158\uc744 \uc804\ub2ec\ud560 \ub54c \uba54\uc11c\ub4dc\uac00 \ud558\ub098\ub9cc \uc788\ub294 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc815\uc758\ud574\uc11c \ud65c\uc6a9\ud55c\ub2e4. \uc774\ub7ec\ud55c \uc778\ud130\ud398\uc774\uc2a4\ub294 <strong>SAM(Single-Abstract Method)<\/strong>\ub77c\uace0 \ubd80\ub978\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub7ec\ud55c \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \uc608\uc81c\ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>interface OnClick {\n    fun onClick(view: View)\n}\n\nfun setOnClickListener(listener: OnClick){...}\n\nsetOnClickListener(object : OnClick {\n    override fun onClick(view:View){...}\n})<\/code><\/pre>\n\n\n\n<p>\uc778\ud130\ud398\uc774\uc2a4 \ub300\uc2e0 \ud568\uc218\ud0c0\uc785\uc744 \uc0ac\uc6a9\ud558\ub294 \ucf54\ub4dc\ub85c \ub2e4\uc74c\uacfc \uac19\uc774 \ubcc0\uacbd\ud574\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fun setOnClickListener(listener: (View) -> Unit) { ... }<\/code><\/pre>\n\n\n\n<p>\ud568\uc218 \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \ud30c\ub77c\ubbf8\ud130\ub97c \uc804\ub2ec\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>setOnClickListener <strong>{ ... }<\/strong> \/\/ trailing \ub78c\ub2e4 \ud45c\ud604\uc2dd\nsetOnClickListener(<strong>fun(view) {...}<\/strong>) \/\/ \uc775\uba85 \ud568\uc218 \uc804\ub2ec\nsetOnClickListener(<strong>::println<\/strong>) \/\/ \ud568\uc218 \ub808\ud37c\ub7f0\uc2a4 \uc804\ub2ec\n\n\/\/ \ud568\uc218 \ud0c0\uc785\uc744 \uad6c\ud604\ud55c \uac1d\uccb4\ub85c \uc804\ub2ec\nclass <strong>ClickListener<\/strong> : (View) -> Unit {\n    override fun invoke(view:View) { ... }\n}\nsetOnClickListener(<strong>ClickListener()<\/strong>)<\/code><\/pre>\n\n\n\n<p>\ud0c0\uc785\ubcc4\uba85(type-aliase)\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>typealias OnClick<\/strong> = (View) -> Unit\nfun setOnClickListener(listener:<strong>OnClick<\/strong>) {...}\n<\/code><\/pre>\n\n\n\n<p><strong>\uadf8\ub807\ub2e4\uba74 \uc5b8\uc81c SAM\uc744 \uc0ac\uc6a9\ud574\uc57c \ud560\uae4c?<\/strong><\/p>\n\n\n\n<p>\uc815\ub2f5: \ucf54\ud2c0\ub9b0\uc774 \uc544\ub2cc \ub2e4\ub978 \uc5b8\uc5b4\uc5d0\uc11c \uc0ac\uc6a9\ud560 \ud074\ub798\uc2a4\ub97c \uc124\uacc4 \ud560 \ub54c<\/p>\n\n\n\n<p>\uc77c\ubc18\uc801\uc778 \uacbd\uc6b0 \ud568\uc218 \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud0dc\uadf8 \ud074\ub798\uc2a4\ubcf4\ub2e4\ub294 \ud074\ub798\uc2a4 \uacc4\uce35 \uc0ac\uc6a9\ud558\uae30<\/h2>\n\n\n\n<p>\ud0dc\uadf8 \ud074\ub798\uc2a4(Tagged class)\ub780 \ud558\ub098\uc758 \ud074\ub798\uc2a4 \ub0b4\uc5d0 Enum \ud0c0\uc785, \uc0c1\uc218, \uac01 \ud0dc\uadf8\ubcc4 \ud544\ub4dc, \ubd84\uae30\ucf54\ub4dc \ub4f1 \uc744 \ud3ec\ud568\ud55c \ud074\ub798\uc2a4\ub97c \uc77c\uceeb\ub294\ub2e4. <\/p>\n\n\n\n<p>\ud0dc\uadf8\ub4dc \ud074\ub798\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ub2e8\uc810\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<ul><li>\ud55c \ud074\ub798\uc2a4\uc5d0 \uc5ec\ub7ec \ubcf4\uc77c\ub7ec\ud50c\ub808\uc774\ud2b8 \ucf54\ub4dc\uac00 \ucd94\uac00\ub41c\ub2e4.<\/li><li>\uc5ec\ub7ec \ubaa9\uc801\uc73c\ub85c \uc0ac\uc6a9\ud574\uc57c \ud558\ubbc0\ub85c \ud504\ub85c\ud37c\ud2f0\uac00 \uc77c\uad00\uc801\uc774\uc9c0 \uc54a\uc744 \uc218 \uc788\ub2e4.<\/li><li>\uac1d\uccb4\uac00 \uc81c\ub300\ub85c \uc0dd\uc131\ub418\ub294\uc9c0 \ubcf4\uc7a5\ubc1b\uae30 \uc704\ud574 \ud329\ud1a0\ub9ac \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud574\uc57c \ud55c\ub2e4.<\/li><\/ul>\n\n\n\n<p>\ud0dc\uadf8 \ud074\ub798\uc2a4\uc758 \ubb38\uc81c\uc810\uc744 \ud574\uacb0\ud558\ub294 \ubc29\ubc95\uc740 <strong>\ud074\ub798\uc2a4 \uacc4\uce35 \uad6c\uc870<\/strong>\ub85c \ubcc0\uacbd\ud558\ub294 \uac83\uc774\uba70, \ucf54\ud2c0\ub9b0\uc5d0\uc11c\ub294 sealed \ud074\ub798\uc2a4\ub97c \ub9ce\uc774 \uc0ac\uc6a9\ud55c\ub2e4. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">sealed \ud55c\uc815\uc790<\/h3>\n\n\n\n<p>sealed\ub294 \uc678\ubd80 \ud30c\uc77c\uc5d0\uc11c \uc11c\ube0c \ud074\ub798\uc2a4\ub97c \ub9cc\ub4dc\ub294 \ud589\uc704\ub97c \uc81c\ud55c\ud55c\ub2e4. \uadf8\ub7ec\ubbc0\ub85c when\uc744 \uc0ac\uc6a9\ud560 \ub54c \uc11c\ube0c\ud074\ub798\uc2a4\ubcc4 \ubd84\uae30\ub97c \ub9cc\ub4dc\ub294 \uacbd\uc6b0 else\ub97c \uc120\uc5b8\ud560 \ud544\uc694\uac00 \uc5c6\uc5b4\uc9c4\ub2e4. \uc65c\ub0d0\ud558\uba74 \uc678\ubd80\uc5d0\uc11c \uc11c\ube0c\ud074\ub798\uc2a4 \ud0c0\uc785\uc774 \ucd94\uac00\ub418\uc9c0 \uc54a\uc744 \uac83\uc774\ub77c\ub294\uac8c \ubcf4\uc7a5\ub418\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc0c1\ud0dc \ud328\ud134<\/h3>\n\n\n\n<p>\uc0c1\ud0dc \ud328\ud134\uc740 \uac1d\uccb4\uc758 \ub0b4\ubd80 \uc0c1\ud0dc\uac00 \ubcc0\ud654\ud560 \ub54c, \uac1d\uccb4\uc758 \ub3d9\uc791\uc774 \ubcc0\ud558\ub294 \ub514\uc790\uc778 \ud328\ud134. MVC, MVP, MVVM \ub4f1\uacfc \uac19\uc740 \uc124\uacc4\ub97c \ud560 \ub54c \ub9ce\uc774 \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">equals \uaddc\uc57d \uc9c0\ud0a4\uae30<\/h2>\n\n\n\n<p>\uc790\ubc14\uc5d0 Object\uac00 \uc788\ub2e4\uba74, \ucf54\ud2c0\ub9b0\uc5d0\ub294 Any\uac00 \uc788\ub2e4. Any\uc5d0\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uaddc\uc57d\uc744 \uac00\uc9c4 \uba54\uc11c\ub4dc\ub4e4\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<ul><li>equals: \ub3d9\ub4f1\uc131 \ud655\uc778<\/li><li>hashCode: \ub450\uac1d\uccb4\uac00 \ub3d9\ub4f1\ud558\ub2e4\uba74 \ubc84\ud0b7 \uc544\uc774\ub514\ub3c4 \uac19\ub2e4.<\/li><li>toString: \uac1d\uccb4\ub97c \ud45c\ud604\ud560 \ubb38\uc790\uc5f4<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ub3d9\ub4f1\uc131<\/h3>\n\n\n\n<p>\ub450\uac00\uc9c0 \uc885\ub958\uc758 \ub3d9\ub4f1\uc131\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<ul><li>\uad6c\uc870\uc801 \ub3d9\ub4f1\uc131 : ==\uc5f0\uc0b0\uc790 \ub610\ub294 equals\ub85c \ud655\uc778.<\/li><li>\ub808\ud37c\ub7f0\uc2a4\uc801 \ub3d9\ub4f1\uc131 : ===\uc5f0\uc0b0\uc790\ub85c \ud655\uc778<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>data class Player(\n    val id:Int,\n    val name: String,\n    val points: Int\n)\n\nfun main() = runBlocking {\n    val player1 = Player(0,\"Charles\", 9999)\n    val player2 = Player(0,\"Charles\", 9999)\n    \n    println(player1.equals(player2)) \/\/ true\n    println(player1 == player2) \/\/ true\n    println(player1 === player2) \/\/ false\n    \n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">equals \uaddc\uc57d<\/h3>\n\n\n\n<p>\uc774 \uac1d\uccb4\uac00 \uc5b4\ub5a4 \ub2e4\ub978 \uac1d\uccb4\uc640 \uac19\uc740\uc9c0 \ud655\uc778\ud560 \ub54c equals\ub97c \uc0ac\uc6a9\ud55c\ub2e4. \ub2e4\uc74c\uc758 \uc694\uad6c\uc0ac\ud56d\uc744 \ucda9\uc871\ud574\uc57c \ud55c\ub2e4. \uc774\ubbf8 \uc544\ub294 \uc0ac\uc2e4 \uc774\uae30\ub3c4 \ud558\uc9c0\ub9cc, \uc218\ud559\uc5d0\uc11c &#8216;=&#8217; \uae30\ud638\ub97c \ub5a0\uc62c\ub9ac\uba74 \uc27d\uac8c \ubc1b\uc544\ub4e4\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<ul><li>\ubc18\uc0ac\uc801 \ub3d9\uc791: x\uac00 null\uc774 \uc544\ub2c8\ub77c\uba74 x.equals(x) \uc740 \ud56d\uc0c1 true<\/li><li>\ub300\uce6d\uc801 \ub3d9\uc791: x\uc640 y\uac00 null\uc774 \uc544\ub2c8\ub77c\uba74 x.equals(y), y.equals(x) \ub294 \ud56d\uc0c1 \uac19\uc740 \uacb0\uacfc\ub2e4<\/li><li>\uc5f0\uc18d\uc801 \ub3d9\uc791: x, y, z null\uc774 \uc544\ub2c8\uace0, x.equals(y) \uc640 y.equals(z)\uac00 true\ub77c\uba74 x.equals(z)\ub3c4 true\ub2e4.(\uc0bc\ub2e8\ub17c\ubc95)<\/li><li>\uc77c\uad00\uc801 \ub3d9\uc791: x\uc640 y\uac00 null\uc774 \uc544\ub2cc \uac12\uc774\uba74 x.equals(y)\ub294 \ud56d\uc0c1 \uac19\uc740 \uacb0\uacfc\ub97c \ubc18\ud658\ud55c\ub2e4. (\uba71\ub4f1\uc131)<\/li><li>\ub110\uacfc \uad00\ub828\ub41c \ub3d9\uc791: x\uac00 null\uc774 \uc544\ub2cc \uac12\uc774\uba74 x.equals(null)\ub294 \ud56d\uc0c1 false\ub97c \ubc18\ud658\ud55c\ub2e4.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">URL\uacfc \uad00\ub828\ub41c equals \ubb38\uc81c<\/h3>\n\n\n\n<p>java.net.URL\uc740 equals\ub97c \uc798\ubabb \uc124\uacc4 \ud588\ub2e4. \ub2e4\uc74c \uc608\uc81c \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    val url1 = java.net.URL(\"https:\/\/www.charlezz.com\")\n    val url2 = java.net.URL(\"https:\/\/charlezz.com\")\n    println(url1==url2)<\/code><\/pre>\n\n\n\n<p>\uc774 \ucf54\ub4dc\ub294 \uc0c1\ud669\uc5d0 \ub530\ub77c\uc11c \ucd9c\ub825\uc774 \ub2ec\ub77c\uc9c4\ub2e4. java.net.URI\ub97c \uc0ac\uc6a9\ud574\uc11c \ubb38\uc81c\ub97c \ud574\uacb0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>\ud2b9\ubcc4\ud55c \uc774\uc720\uac00 \uc5c6\ub294 \uc774\uc0c1 \uc9c1\uc811 equals\ub97c \uc88b\uc9c0 \uc54a\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \uc81c\uacf5\ub418\ub294 \uac83\uc744 \uadf8\ub300\ub85c \uc4f0\uc790.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">hashCode \uaddc\uc57d \uc9c0\ud0a4\uae30<\/h2>\n\n\n\n<p>hashCode\ud568\uc218\ub294 <strong><a href=\"https:\/\/ko.wikipedia.org\/wiki\/%ED%95%B4%EC%8B%9C_%ED%85%8C%EC%9D%B4%EB%B8%94\">\ud574\uc2dc \ud14c\uc774\ube14<\/a><\/strong>\uc744 \uad6c\ucd95\ud560 \ub54c \uc0ac\uc6a9\ub41c\ub2e4. \ud574\uc2dc\ud14c\uc774\ube14\uc740 \uc131\ub2a5\uc774 \uaf64 \uc88b\uc73c\uba70, \uac01 \uc694\uc18c\uc5d0 \uc784\uc758\uc758 \uc22b\uc790\ub97c \ubd80\uc5ec\ud558\ub294 \ud589\uc704\uac00 \ud544\uc694\ud558\ub2e4. \uc774\ub97c \ud574\uc2dc \ud568\uc218\ub77c\uace0 \ud558\uba70 \uac19\uc740 \uc694\uc18c\ub77c\uba74 \ud56d\uc0c1 \uac19\uc740 \uc22b\uc790\ub97c \ubc18\ud658\ud55c\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc0dd\ub7b5\ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uac00\ubcc0\uc131\uacfc \uad00\ub828\ub41c \ubb38\uc81c<\/h3>\n\n\n\n<p>\uc694\uc18c\uac00 \ucd94\uac00 \ub420 \ub54c\ub9cc \ud574\uc2dc \ucf54\ub4dc\ub97c \uacc4\uc0b0\ud55c\ub2e4. \uc694\uc18c\uac00 \ubcc0\uacbd\ub418\uc5b4\ub3c4 \ud574\uc2dc \ucf54\ub4dc\ub294 \uacc4\uc0b0\ub418\uc9c0 \uc54a\uace0, \ubc84\ud0b7 \uc7ac\ubc30\uce58\ub3c4 \uc774\ub8e8\uc5b4\uc9c0\uc9c0 \uc54a\ub294\ub2e4. \ub2e4\uc74c \uc608\uc81c \ucf54\ub4dc\ub97c \ud1b5\ud574 \ud1b5\ucc30\uc744 \uc5bb\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>data class FullName(\n\tvar name: String,\n    var surname: String\n)\n\nfun main() = runBlocking {\n    val person = FullName(\"Charles\", \"com\")\n    val s = mutableSetOf&lt;FullName>()\n    s.add(person)\n    println(person in s) \/\/ true\n    person.surname = \"Ok\" \/\/ \uc5ec\uae30\uc11c person\uc758 hashCode \uac12\uc774 \ubcc0\uacbd\ub428\n    println(person) \/\/ FullName(name=Charles, surname=<meta charset=\"utf-8\">Ok)\n    println(person in s) \/\/ false, \ubc84\ud0b7\uc758 \uc7ac\ubc30\uce58\uac00 \uc774\ub8e8\uc5b4 \uc9c0\uc9c0 \uc54a\uae30 \ub54c\ubb38\uc5d0 false \ubc18\ud658\n    println(s.first() == person) \/\/ true\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">hashCode\uc758 \uaddc\uc57d<\/h3>\n\n\n\n<p>hashCode\uc640 equals\ub294 \uc77c\uad00\uc131\uc774 \uc788\ub294 \ub3d9\uc791\uc744 \ud574\uc57c\ud55c\ub2e4. \ub2e4\uc74c\uc758 \uaddc\uc57d\uc744 \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n\n\n\n<ul><li>\uc5b4\ub5a4 \uac1d\uccb4\ub97c \ubcc0\uacbd\ud558\uc9c0 \uc54a\uc558\ub2e4\uba74 hashCode\ub294 \uc5ec\ub7ec \ubc88 \ud638\ucd9c\ud574\ub3c4 \uadf8 \uacb0\uacfc\uac00 \ud56d\uc0c1 \uac19\uc544\uc57c \ud55c\ub2e4.<\/li><li>equals \ud568\uc218 \ud638\ucd9c\uc758 \uacb0\uacfc\uac00 \uac19\ub2e4\uba74 hashCode \uba54\uc11c\ub4dc\uc758 \ud638\ucd9c \uacb0\uacfc\ub3c4 \uac19\uc544\uc57c \ud55c\ub2e4.<\/li><\/ul>\n\n\n\n<p>\ub9cc\uc57d \uadf9\ub2e8\uc801\uc73c\ub85c \uc5b4\ub5a4 \ud074\ub798\uc2a4\uc758 hashCode\ud568\uc218\uac00 \ud56d\uc0c1 0\uc744 \ubc18\ud658\ud55c\ub2e4\uba74, \ud574\ub2f9 \ud074\ub798\uc2a4\ub85c \ub9cc\ub4e4\uc5b4\uc9c4 \uac1d\uccb4\ub294 \ubaa8\ub450 \uac19\uc740 \ubc84\ud0b7\uc5d0 \ub4e4\uc5b4\uac00\ubbc0\ub85c \ud574\uc2dc \ud14c\uc774\ube14\uc774 \uac16\ub294 \uc131\ub2a5\uc801\uc778 \uce21\uba74\uc758 \uc774\uc810\uc744 \ud65c\uc6a9\ud558\uc9c0 \ubabb\ud558\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<p>data \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uba74 \uc801\ub2f9\ud55c eqauls\uc640 hashCode\ub97c \uad6c\ud604\ud574\uc8fc\ubbc0\ub85c \uc774\ub97c \uc798 \ud65c\uc6a9\ud558\uc790. \uadf8\ub9ac\uace0 \uae30\uc5b5\ud558\uc790. hashCode\ub97c \uad6c\ud604\ud560 \ub54c \uac00\uc7a5 \uc911\uc694\ud55c \uaddc\uce59\uc740 &#8220;\uc5b8\uc81c\ub098 equals\uc640 \uc77c\uad00\ub41c \uacb0\uacfc\uac00 \ub098\uc640\uc57c \ud55c\ub2e4\ub294 \uac83&#8221;\uc744.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">compareTo \uaddc\uc57d \uc9c0\ud0a4\uae30<\/h2>\n\n\n\n<p><a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/-comparable\/compare-to.html\">compareTo<\/a>\ub294 \uc218\ud559\uc801\uc778 \ubd80\ub4f1\uc2dd\uc73c\ub85c \ubcc0\ud658\ub418\ub294 \uc5f0\uc0b0\uc790\ub2e4. \uc77c\ubc18\uc801\uc73c\ub85c \uc5b4\ub290 \uac1d\uccb4\ub97c \ub2e4\ub978 \uac1d\uccb4\uc640 \ube44\uad50\ud558\uc5ec \uc21c\uc11c\ub97c \uc9c0\uc815\ud558\ub294\ub370, \ube44\uad50\ud558\ub294 \uac1d\uccb4\uc640 \uac19\uc73c\uba74 0\uc744 \ubc18\ud658\ud558\uace0, \ube44\uad50\ud558\ub294 \uac1d\uccb4\ubcf4\ub2e4 \uc791\uc73c\uba74 \uc74c\uc218\ub97c, \ud06c\uba74 \uc591\uc218\ub97c \ubc18\ud658\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>obj1 > obj2  \/\/ (obj1.compareTo(obj2) > 0) \uc73c\ub85c \ubc14\ub010\ub2e4.\n<meta charset=\"utf-8\">obj1 &lt; obj2  \/\/ (obj1.compareTo(obj2) &lt; 0) \uc73c\ub85c \ubc14\ub010\ub2e4.  \n<meta charset=\"utf-8\">obj1 >= obj2  \/\/ (obj1.compareTo(obj2) >= 0) \uc73c\ub85c \ubc14\ub010\ub2e4.  \n<meta charset=\"utf-8\">obj1 &lt;= obj2  \/\/ (obj1.compareTo(obj2) &lt;= 0) \uc73c\ub85c \ubc14\ub010\ub2e4.  <\/code><\/pre>\n\n\n\n<p>compareTo\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ub3d9\uc791\ud55c\ub2e4.<\/p>\n\n\n\n<ul><li>\ube44\ub300\uce6d\uc801 \ub3d9\uc791: equals\uc758 \uac83\uacfc \uc720\uc0ac<\/li><li>\uc5f0\uc18d\uc801 \ub3d9\uc791: equals\uc758 \uac83\uacfc \uc720\uc0ac<\/li><li><a href=\"https:\/\/ko.wikipedia.org\/wiki\/%EC%BD%94%EB%84%A5%EC%8A%A4_%EA%B4%80%EA%B3%84\">\ucf54\ub125\uc2a4\uc801 \ub3d9\uc791<\/a>: \ub450 \uc694\uc18c\ub294 \ud655\uc2e4\ud55c \uad00\uacc4\ub97c \uac16\uace0 \uc788\uc5b4\uc57c \ud55c\ub2e4. \uc989, a >= b \ub610\ub294 b >= a \uc911\uc5d0 \uc801\uc5b4\ub3c4 \ud558\ub098\ub294 \ud56d\uc0c1 true\uc5ec\uc57c \ud55c\ub2e4. \ucf54\ub125\uc2a4 \uad00\uacc4\uac00 \uc5c6\uc73c\uba74 \uc815\ub82c \uc54c\uace0\ub9ac\uc998\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\ub2e4. <\/li><\/ul>\n\n\n\n<p>compareTo\ub97c \uc9c1\uc811 \uc815\uc758\ud574\uc57c\ud558\ub294 \uacbd\uc6b0\ub294 \uac70\uc758 \uc5c6\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \uc608\uc678\uc5d0 \ub300\ud55c \ub0b4\uc6a9\uc740 \uc0dd\ub7b5\ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">API\uc758 \ud544\uc218\uc801\uc774\uc9c0 \uc54a\ub294 \ubd80\ubd84\uc744 \ud655\uc7a5\ud568\uc218\ub85c \ucd94\ucd9c\ud558\uae30<\/h2>\n\n\n\n<p>\ud074\ub798\uc2a4\ub97c \uc124\uacc4\ud558\ub2e4\ubcf4\uba74 \uba54\uc11c\ub4dc\ub97c \uba64\ubc84\ub85c \uc815\uc758\ud560 \uc9c0 \ud655\uc7a5\ud568\uc218\ub85c \ub530\ub85c \ube84\uc9c0 \uace0\ubbfc\ud558\uac8c \ub41c\ub2e4. \uc815\ub2f5\uc740 \uc5c6\uc73c\ubbc0\ub85c \ub450\uac00\uc9c0 \ubc29\uc2dd\uc758 \uc7a5\ub2e8\uc810\uc744 \uba85\ud655\ud558\uac8c \ud30c\uc545\ud558\uace0 \uc0c1\ud669\uc5d0 \ub9de\uac8c \uc0ac\uc6a9\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<ul><li>\ud655\uc7a5 \ud568\uc218\ub294 \uc77c\ubc18\uc801\uc73c\ub85c \ub2e4\ub978 \ud328\ud0a4\uc9c0\uc5d0 \uc704\uce58\ud55c\ub2e4. <\/li><li>\uac19\uc740 \uc774\ub984\uc73c\ub85c \ub2e4\ub978 \ub3d9\uc791\uc744 \ud558\ub294 \ud655\uc7a5\ud568\uc218\uac00 \uc788\uc744 \uacbd\uc6b0 \uc704\ud5d8\ud560 \uc218 \uc788\ub2e4.<\/li><li>\uba64\ubc84 \uba54\uc11c\ub4dc\uc640 \ud655\uc7a5\ud568\uc218\uba85\uc774 \uac19\uc73c\uba74 \uba64\ubc84 \uba54\uc11c\ub4dc\uac00 \uc6b0\uc120 \uc21c\uc704\ub97c \uac16\ub294\ub2e4.<\/li><li>\ud655\uc7a5 \ud568\uc218\ub294 \ud074\ub798\uc2a4 \uc704\uac00 \uc544\ub2c8\ub77c \ud0c0\uc785 \uc704\uc5d0 \ub9cc\ub4e4\uc5b4\uc9c0\ubbc0\ub85c, \ud074\ub798\uc2a4 \ub808\ud37c\ub7f0\uc2a4\uc5d0 \ub098\uc624\uc9c0 \uc54a\ub294\ub2e4<\/li><li>\ud655\uc7a5 \ud568\uc218\ub294 \uc2e4\uc81c\ub85c \ud655\uc7a5\ud558\ub294 \ud074\ub798\uc2a4\ub97c \uc218\uc815\ud558\uc9c0 \uc54a\ub294\ub2e4. \uc815\uc801\uc73c\ub85c \uc804\ub2ec\ub41c\ub2e4.<\/li><li>\ud655\uc7a5 \ud568\uc218\ub294 \uac00\uc0c1(virtual)\ud568\uc218\uac00 \uc544\ub2c8\ub2e4. \uadf8\ub7ec\ubbc0\ub85c \ud30c\uc0dd \ud074\ub798\uc2a4\uc5d0\uc11c \uc624\ubc84\ub77c\uc774\ub4dc \ud560 \uc218 \uc5c6\ub2e4. \uc989, \uc0c1\uc18d\uc744 \ubaa9\uc801\uc73c\ub85c \uc124\uacc4\ub41c \uc694\uc18c\ub294 \ud655\uc7a5\ud568\uc218\ub85c \ub9cc\ub4e4\uba74 \uc548\ub41c\ub2e4.<\/li><\/ul>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>\uac00\uc0c1(\bvirtual)\ud568\uc218\ub77c\ub294 \uac83\uc740 \ub7f0\ud0c0\uc784\uc5d0 \uacb0\uc815\ub41c \ud568\uc218\ub97c \ub9d0\ud55c\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0 \ud568\uc218\uac00 \ud638\ucd9c\ub418\uae30 \uc804\uc5d0 \uc624\ubc84\ub77c\uc774\ub4dc \ud560 \uc218 \uc788\uc73c\uba70 \ucf54\ud2c0\ub9b0\uc5d0\uc11c\ub294 open \ub610\ub294 abstract \ud0a4\uc6cc\ub4dc\ub97c \ubd99\uc5ec \uac00\uc0c1\ud568\uc218\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4. c++\uc5d0 \uc775\uc219\ud558\ub2e4\uba74  c++\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 virtual \ud0a4\uc6cc\ub4dc\uc640 \uc77c\ub9e5\uc0c1\ud1b5\ud55c\ub2e4\ub294 \uac83\uc744 \ub208\uce58 \ucc4c \uc218 \uc788\ub2e4.<\/p><\/blockquote>\n\n\n\n<p>\ud655\uc7a5\ud568\uc218\ub294 \uc6b0\ub9ac\uc5d0\uac8c \ub354 \ub9ce\uc740 \uc790\uc720\uc640 \uc720\uc5f0\uc131\uc744 \uc900\ub2e4. \ud655\uc7a5 \ud568\uc218\ub294 \uc0c1\uc18d, \uc5b4\ub178\ud14c\uc774\uc158 \ucc98\ub9ac \ub4f1\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uace0, \ud074\ub798\uc2a4 \ub0b4\ubd80\uc5d0 \uc5c6\ub2e4. API\uc758 \ud544\uc218\uc801\uc778 \ubd80\ubd84\uc740 \uba64\ubc84\ub85c \ub450\ub294 \uac83\uc774 \uc88b\uc9c0\ub9cc, \ud544\uc218\uc801\uc774\uc9c0 \uc54a\uc740 \ubd80\ubd84\uc740 \ud655\uc7a5\ud568\uc218\ub85c \ub9cc\ub4dc\ub294 \uac83\uc774 \uc5ec\ub7ec\ubaa8\ub85c \uc88b\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uba64\ubc84 \ud655\uc7a5\ud568\uc218\uc758 \uc0ac\uc6a9\uc744 \ud53c\ud558\ub77c<\/h2>\n\n\n\n<p>\uba64\ubc84 \ud655\uc7a5\uc744 \ud53c\ud574\uc57c \ud558\ub294 \uba87\uac00\uc9c0 \uc774\uc720<\/p>\n\n\n\n<ul><li>\ud568\uc218 \ub808\ud37c\ub7f0\uc2a4\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc74c<\/li><li>\uc554\ubb35\uc801 \uc811\uadfc\uc744 \ud560 \ub54c \ub450 \ub9ac\uc2dc\ubc84 \uc911\uc5d0 \uc5b4\ub5a4 \ub9ac\uc2dc\ubc84\uac00 \uc120\ud0dd\ub420\uc9c0 \ud63c\ub780\uc2a4\ub7fd\ub2e4.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>class A {\n    val a = 10\n}\nclass B {\n    val a = 20\n    val b = 30\n    \n    fun A.test() = a+b \/\/ \uc5ec\uae30\uc11c a\ub294 10\uc778\uac00 20\uc778\uac00\n}<\/code><\/pre>\n\n\n\n<ul><li>\ub9c8\ucc2c\uac00\uc9c0\ub85c \ud655\uc7a5\ud568\uc218\uac00 \uc678\ubd80\uc5d0 \uc788\ub294 \ub2e4\ub978 \ud074\ub798\uc2a4\ub97c \ub9ac\uc2dc\ubc84\ub85c \ubc1b\uc744 \ub54c, \ud574\ub2f9 \ud568\uc218\uac00 \uc5b4\ub5bb\uac8c \ub3d9\uc791\ud558\ub294\uc9c0 \uc560\ub9e4\ubaa8\ud638 \ud558\ub2e4.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>class A { ... }\nclass B { \n    \n    fun A.update() = ... \/\/ \ub204\uad74 \uc704\ud55c \uc5c5\ub370\uc774\ud2b8\uc778\uac00\n}\n<\/code><\/pre>\n\n\n\n<p>\uc77c\ubc18\uc801\uc73c\ub85c\ub294 \uba64\ubc84 \ud655\uc7a5\ud568\uc218 \uc0ac\uc6a9\uc740 \ud53c\ud558\ub294 \uac83\uc774 \uc88b\uace0, \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0 \ub2e8\uc810\uc744 \uba85\ud655\ud788 \uc778\uc9c0\ud558\uc790. \uadf8\ub9ac\uace0 \uac00\uc2dc\uc131 \uc81c\ud55c\uc790\ub97c \uc801\uadf9 \ud65c\uc6a9\ud558\uc5ec \uc678\ubd80\uc5d0 \ub178\ucd9c\ub418\uc9c0 \uc54a\ub3c4\ub85d \ud558\uc790.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ucf54\ud2c0\ub9b0\uc5d0\uc11c \uc790\uc8fc \uc0ac\uc6a9\ud558\ub294 \ud074\ub798\uc2a4 \ud328\ud134\uc744 \uc0b4\ud3b4\ubcf4\ub3c4\ub85d \ud55c\ub2e4. \uc774\ubc88 \uc7a5\uc5d0\uc11c\ub294 \ub2e4\uc74c\uc758 \ub0b4\uc6a9\uc5d0 \ub300\ud574\uc11c \uc0dd\uac01 \ud574 \ubcfc \uc218 \uc788\ub2e4. &#8216;\uc0c1\uc18d&#8217;\uc744 \ud65c\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 &#8216;data \ud074\ub798\uc2a4&#8217;\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 \ud558\ub098\uc758 \uba54\uc11c\ub4dc\ub97c \uac16\ub294 \uc778\ud130\ud398\uc774\uc2a4\ub97c \ud568\uc218 \ud0c0\uc785\uc73c\ub85c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uacbd\uc6b0 equals, hashCode \uadf8\ub9ac\uace0 compareTo\uc758 \uaddc\uc57d \uc0c1\uc18d\ubcf4\ub2e4\ub294 \ucef4\ud3ec\uc9c0\uc158 \uc0ac\uc6a9\ud558\uae30 \uc0c1\uc18d\uc740 \uacc4\uce35 \uad6c\uc870\ub97c \ub9cc\ub4e4\uae30 \uc704\ud574 \uc0ac\uc6a9\ud55c\ub2e4. \uacc4\uce35 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45952"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=45952"}],"version-history":[{"count":6,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45952\/revisions"}],"predecessor-version":[{"id":45958,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45952\/revisions\/45958"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=45952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=45952"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=45952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}