[Kotlin] ์์๊ณผ ์ธํฐํ์ด์ค
์์
๋ถ๋ชจ๋ก๋ถํฐ ์ค๋ช ์๋ฅผ ๋ฌผ๋ ค๋ฐ๋๋ค
์ค๋ณต๋๋ ํจ์๋ฅผ ๋ฐ๋ก ๋ถ๋ชจ ํด๋์ค๋ก ๋ง๋ค์ด ํ์ ํด๋์ค์ ๋ฌผ๋ ค์ฃผ๋ ๋ฐฉ์.
๋ถ๋ชจ ํด๋์ค๋ฅผ ์์๋ฐ์ ํ์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ์ ์ธ๋ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
fun main(args: Array<String>) {
val superCar: SuperCar = SuperCar()
superCar.drive()
}
open class Car() {
fun drive() {
}
}
class SuperCar() : Car() {
}
๋ถ๋ชจ ํด๋์ค์ ํจ์๋ฅผ ์์ ํ์ฌ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด
ํด๋น ํจ์๋ฅผ openํ๊ณ ํ์ํด๋์ค์์ overrideํ์ฌ ์ฌ์ฉํ๋ฉด ๋๋ค.
(override : ๋ง์ฐ์ค ์ฐํด๋ฆญ > Generate > Override Methods)
super.drive()์ super๋ ๋ถ๋ชจ ํด๋์ค Car๋ฅผ ๊ฐ๋ฆฌํค๋ฏ๋ก ๋ถ๋ชจ์ drive()๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ป์ด๋ค.
1. (๊ฐ์กฐ) ์๋์ ๊ฐ์ด ์๋ณธ ํด๋์ค์ return๊ฐ์ ์ด์ฉํ์ฌ ์ฌ์ฉํ๊ฑฐ๋
2. (๋ฌด์) ๋ชจ๋ ์ง์ฐ๊ณ ์๋ก์ด ๋ด์ฉ์ ์์ฑํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
open class Car() {
open fun drive() {
return "๋ฌ๋ฆฐ๋ค"
}
}
class SuperCar() : Car() {
override fun drive() {
val run = super.drive()
return "๋นจ๋ฆฌ $run"
}
}
์ธํฐํ์ด์ค
์ธํฐํ์ด์ค๋ ์ฝ์์ด๋ค.
์์๊ณผ ์ ์ฌํ์ง๋ง ์ฐจ์ด์ ์ด ์๋ค.
์์์ ํด๋์ค๋ฅผ ๋ฌผ๋ ค๋ฐ๋ ๊ฐ๋ ์ด๊ณ ์ธํฐํ์ด์ค๋ ํด๋์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ๋ ์ด๋ค.
์์์์๋ ํด๋์ค๋ฅผ ๋ฌผ๋ ค๋ฐ์ผ๋ฉด ํ์ ํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
์ธํฐํ์ด์ค๋ ํด๋์ค๋ฅผ ๋ฌผ๋ ค๋ฐ์ผ๋ฉด ํ์ ํด๋์ค๊ฐ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ๋ฐ๋์ ๊ตฌํํด์ผํ๋ค.
์ธํฐํ์ด์ค์ ํน์ง์ ์์ฑ์๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
ํ์ ํด๋์ค์์๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ override ํด์ผํ๋ค.
(override : ๋ง์ฐ์ค ์ฐํด๋ฆญ > Generate > Implement Methods)
interface Person {
fun eat()
fun sleep()
}
class Student : Person {
override fun eat() {
}
override fun sleep() {
}
}
์ธํฐํ์ด์ค๋ ๊ตฌํ์ด ์๋ ํจ์๋ฅผ ๋ง๋ค ์ ์๋ค.
์ธํฐํ์ด์ค์ ํจ์๊ฐ ๊ตฌํ๋์ด์๋ค๋ฉด ํ์ ํด๋์ค์์ ๊ตฌํํ์ง ์์๋ ๋๋ค.
๊ทธ๋ฌ๋ ์ธํฐํ์ด์ค์ ํจ์ ์ค abstract๋ก ์ ์ธ๋ ํจ์๋ ํ์ ํด๋์ค์์ ๋ฐ๋์ ๊ตฌํํด์ฃผ์ด์ผํ๋ค.
'๐ฃ์ธ์ด > Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kotlin] ์ฌ๋ฌ๊ฐ์ง ๋ฐ๋ณต๋ฌธ (0) | 2021.05.25 |
---|---|
[Kotlin] Collection : list, set, map (0) | 2021.05.25 |