[Kotlin] ์ƒ์†๊ณผ ์ธํ„ฐํŽ˜์ด์Šค

2021. 5. 28. 14:40

์ƒ์†

๋ถ€๋ชจ๋กœ๋ถ€ํ„ฐ ์„ค๋ช…์„œ๋ฅผ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค

์ค‘๋ณต๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด ํ•˜์œ„ ํด๋ž˜์Šค์— ๋ฌผ๋ ค์ฃผ๋Š” ๋ฐฉ์‹.

๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์„ ์–ธ๋œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

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๋กœ ์„ ์–ธ๋œ ํ•จ์ˆ˜๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

728x90

'๐Ÿ“ฃ์–ธ์–ด > Kotlin' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Kotlin] ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐ˜๋ณต๋ฌธ  (0) 2021.05.25
[Kotlin] Collection : list, set, map  (0) 2021.05.25

BELATED ARTICLES

more