๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ œ๋„ค๋ฆญ2

[Effective Kotlin] ์•„์ดํ…œ 24. ์ œ๋„ค๋ฆญ ํƒ€์ž…๊ณผ variance ํ•œ์ •์ž๋ฅผ ํ™œ์šฉํ•˜๋ผ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ ์šฉํ•˜๋ฉด์„œ ์ถ”์ƒํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ ๊ทน ํ™œ์šฉํ–ˆ์—ˆ๊ณ , ๊ฐ•ํƒ€์ž… ์–ธ์–ด์˜€๊ธฐ์— ํŠนํžˆ ํƒ€์ž…์„ ์ž˜ ํ™œ์šฉํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์ œ๋„ค๋ฆญ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๊ณต๋ณ€, ๋ฐ˜๊ณต๋ณ€ ์„ฑ ๋“ฑ์˜ ํŠน์ง•์„ ์ œ๋„ค๋ฆญ์ด ์–ด๋–ป๊ฒŒ ํ’€์–ด๋ƒˆ๋Š”์ง€ ๊ณต๋ถ€ํ–ˆ๋‹ค. extend, super ๋“ฑ์˜ ํ•œ์ •์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ€์ž…์„ ์ ์ ˆํžˆ ์ œ์–ดํ–ˆ์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ œ๋„ค๋ฆญ์˜ ํ•œ์ •์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ž๋ฐ”์˜ ๊ฒฐํ•จ์„ ๊ฐœ์„ ํ•˜๋ฉด์„œ ๋ง์ด์ง€. Out ํ•œ์ •์ž ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ณต๋ณ€์œผ๋กœ ๋งŒ๋“ ๋‹ค. class University open class Student class FreshMan : Student() fun main(args: Array) { val b: University = University() // OK val a: Universi.. 2023. 1. 27.
[Effective Kotlin] ์•„์ดํ…œ 23. ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์„€๋„์ž‰์„ ํ”ผํ•˜๋ผ ์„€๋„์ž‰์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? class Person(val name : String) { fun addPerson(name : String) { // ... } } addPerson() ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ Person class์˜ ํ”„๋กœํ„ฐํ‹ฐ ์ด๋ฆ„๊ณผ ๊ฐ™์•„์ง„๋‹ค. ์™ธ๋ถ€ ์Šค์ฝ”ํ”„์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€๋ฆฌ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์„€๋„์ž‰์ด๋ผ ํ•œ๋‹ค. ์ด๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์ฐจ๋ฆฌ๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค. ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. interface Payment class KakaoPay: Payment class NaverPay: Payment class PaymentHistory { fun addPayment(payment: T) { // ... } } ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” PaymentHistory์˜ ์ œ๋„ค๋ฆญ ํƒ€์ž…๊ณผ addPayment()์˜ ํƒ€์ž… .. 2023. 1. 25.
๋ฐ˜์‘ํ˜•