๐ค ์์ฑ์
"ํด๋์ค(์ค๊ณ๋)๋ฅผ ์ค์ฒดํํ ๋ ์ต์ด๋ก ์คํํ ๋ก์ง์ ์์ฑ"
- ํด๋์ค๋ ๊ฒฐ๊ตญ '์ด๋ป๊ฒ ๋ง๋ค ๊ฒ์ด๋ค'ํ๋ ์ข
์์ฅ ๊ฐ์ ๊ฒ ์ด์ด์ ์ค์ฒดํํด์ผ๋ง(๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ๋์ผ๋ง) ์ ๊ทผ(์๋ฅผ ๋ค์ด, ๋จธ๋ฆฌ ์์, ํค, ์ด๋ฆ ๋ฑ์ ์ค์ ํ๊ฑฐ๋ ๊ฐ์ ธ์ค๊ธฐ)ํ ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํด๋์ค๋ฅผ ์ค์ฒดํ ํ ๋(์ด ํด๋์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด ๋) ์ต์ด๋ก ํญ์ ์ด๋ฐ ์์
์ ํ๋ผ๊ณ ๋ฏธ๋ฆฌ ์ธํ
ํด ๋์ผ ํ๋๋ฐ, ์ด๊ฒ์ด ์์ฑ์์ด๋ค.
- ๊ธฐ๋ณธ ์์ฑ์์ ๋ช
์์ ์์ฑ์๊ฐ ์กด์ฌ.
- ๊ธฐ๋ณธ ์์ฑ์๋ ์ด์ ๊น์ง ํด๋์ค๋ฅผ ๋ง๋ค๋ ํ์์ ์ฐจ์ด๊ฐ ์๋ค.
- ๋ช
์์ ์์ฑ์๋ ์ฃผ ์์ฑ์์ ๋ถ ์์ฑ์๋ก ๊ตฌ๋ถํ ์ ์๋ค.
โถ๏ธ Kotlin์ ์์ฑ์ ์ข
๋ฅ
1. ์ฃผ ์์ฑ์(init)
- ์ ๋ณด์ธ ํ๋กํผํฐ์ ํ์์ธ ๋ฉ์๋ ์ฌ์ด์ init์ด ๋ค์ด๊ฐ๋ค.
- ํด๋์ค ์ ์ธ๋ถ์ ์์ฑ์๋ฅผ ๋ช
์ํ๋ค.
- init์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ง์ ๋๊ธฐ์ง ์๋๋ค.
- ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ์ ์ผ๋ก ๋๊ฒจ์ ์ฌ์ฉํ๋ ๊ฒ ์๋๋ผ, class์ ๋ฑ ํ๋๋ง ๋๊ฒจ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. init์ ์ฌ์ฉํ๋ ์ฃผ ์์ฑ์๋ ๋ฐ๋์ ํ๋์ ํํ๋ง(์๋ ์์์๋ ๋ฌด์กฐ๊ฑด name, haircolor, height๋ง) ๋ฐ๋ ์์ฑ์๋ง ๋ง๋ค ์ ์๋ค.
fun main() {
}
class Character(_name:String, _hairColor:String, _height:Double) {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
init {
println("๋งค๊ฐ๋ณ์์๋ ์์ฑ์ ์คํ ์๋ฃ!")
}
fun fireBall() {
println("ํ์ด์ด๋ณผ!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("์๋ก์ด ๋ฌด๊ธฐ์ธ ${device3}์
๋๋ค")
return device3
}
}
2. ๋ถ ์์ฑ์(constructor)
- ์ฃผ ์์ฑ์์ฒ๋ผ ํด๋์ค ์ ์ธ๋ถ์ ์์ฑ์๋ฅผ ๋ช
์ํ์ง ์๊ณ , constructor๋ผ๋ ํค์๋๋ก ๋ฉ์๋์ฒ๋ผ ์ ์ธํ๋ค.
- ํด๋์ค๋ฅผ ์ค์ฒดํํ ๋ constructor์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ค ๋ฐ์์ ์ฝ๋๋ฅผ ์คํํ๋ค.
- ์ฃผ ์์ฑ์์ ๋ค๋ฅด๊ฒ ์ ์ธ๋ถ์ ํ๋๋ง ๋ช
์ํ๋ ๊ฒ์ด ์๋๋ผ, constructor๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด์ ์ฌ์ฉํ ์ ์๋ค.
ex) ์ด๋ค ์์ฑ์๋ name๋ง ๋ฐ๊พธ๊ณ , ์ด๋ค ์์ฑ์๋ name๊ณผ haircolor๋ง ๋ฐ๊พธ๊ณ , ์ด๋ค ์์ฑ์๋ 3๊ฐ์ง ๋ค ๋ฐ๊พธ๊ฒ ์์ฑ์๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค ์ ์๋ค.
์๋ ์์์์๋ ๋ถ ์์ฑ์๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ง๋ค์ด์ ์บ๋ฆญํฐ ๋ง๋ค ๋ ์ํ๋ ์์ฑ์๋ฅผ ์ ํํด์ ์ต์ด ๋ก์ง์ ์ํํ ์ ์๊ฒ ํ ์ ์๋ค.
fun main() {
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}์ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_hairColor}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_height}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
}
fun fireBall() {
println("ํ์ด์ด๋ณผ!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("์๋ก์ด ๋ฌด๊ธฐ์ธ ${device3}์
๋๋ค")
return device3
}
}
โญ๏ธ ์ฐจ์ด์ : init์ Class ์์, construct๋ Class ์์!
โถ๏ธ ์์ฑ์ ์ฌ์ฉ ์์น
- ํ ๊ฐ์ง์ ํํ๋ก ํด๋์ค๋ฅผ ์ค์ฒดํํ ๋๋ ์ฃผ ์์ฑ์๋ฅผ ํ์ฉํ ์ ์๋ค.
- ์ฃผ ์์ฑ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ์ ์ผ๋ก ๋๊ฒจ์ ์ฌ์ฉํ๋ ๊ฒ ์๋๋ผ ํด๋์ค์ ๋ฑ ํ๋๋ง ๋๊ฒจ์ ์ฌ์ฉํ๋ค. ๋ฐ๋์ ํ๋์ ํํ๋ง ๋ฐ๋ ์์ฑ์๋ง ๋ง๋ค ์ ์๋ค.
- ํญ์ <์ด๋ฆ, ๋จธ๋ฆฌ์์, ํค>๋ง ์์ฑ์์์ ์ต์ด๋ก ์ฝ๋๋ฅผ ์คํํ ๋๋ ์ฃผ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ค.
- ์ฌ๋ฌ ํํ๋ก ํด๋์ค๋ฅผ ์ค์ฒดํํ ๋๋ ๋ถ ์์ฑ์๋ฅผ ํ์ฉํ ์ ์๋ค.
- ๋ถ ์์ฑ์๋ ํ๋์ ํํ๋ง ๋ช
์ํ๋ ๊ฒ์ด ์๋๋ผ constructor๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค ์ ์๋ค.
ex) ์ด๋ค ์์ฑ์๋ ์ด๋ฆ๋ง ๋ฐ๊พธ๊ณ , ์ด๋ค ์์ฑ์๋ ์ด๋ฆ๊ณผ ๋จธ๋ฆฌ์์์ ๋ฐ๊พธ๊ณ , ์ด๋ค ์์ฑ์๋ ์ด๋ฆ, ๋จธ๋ฆฌ์์, ํค๋ฅผ ๋ฐ๊พธ๋ ๋ฑ ์ฌ๋ฌ๊ฐ์ ์์ฑ์๋ฅผ ๋ง๋ค ์ ์๋ค. ์ฆ ์์ ์ฝ๋์์๋ ์บ๋ฆญํฐ๋ฅผ ๋ง๋ค ๋, ์ํ๋ ์์ฑ์๋ฅผ ์ ํํด์ ์ต์ด ๋ก์ง์ ์ํํ ์ ์๊ฒ ํ ์ ์๋ค.
- <์ด๋ฆ, ๋จธ๋ฆฌ์์, ํค> ๋๋ <์ด๋ฆ, ๋จธ๋ฆฌ์์, ํค, ๋์ด, ์ฑ๋ณ> ์ฒ๋ผ ์ฌ๋ฌ๊ฐ์ ์์ฑ์๋ฅผ ํตํด ์ต์ด๋ก ์ฝ๋๋ฅผ ์คํํ ๋๋ ๋ถ ์์ฑ์๋ฅผ ์ด์ฉํ๋ค.
โถ๏ธ ์์ ์ฝ๋
- Constructor๋ก ์ฌ๋ฌ๊ฐ์ ์์ฑ์๋ฅผ ๋ง๋ค์ด๋ณด์.
- ๋ ๊ฐ์ ์์ฑ์๋ฅผ ์ ํํด์ ์ค์ฒดํ ํ ์ ์๋ค.
package com.leegahyeon.basicsyntax
fun main() {
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
var age:Int = 0
var gender:String = ""
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}์ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_hairColor}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_height}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
}
constructor(_name:String, _hairColor:String, _height:Double, _age:Int, _gender:String) {
println("${_name}์ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_hairColor}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_height}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_age}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_gender}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
}
fun fireBall() {
println("ํ์ด์ด๋ณผ!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("์๋ก์ด ๋ฌด๊ธฐ์ธ ${device3}์
๋๋ค")
return device3
}
}
๐ค ๊ฐ์ฒด
โถ๏ธ ๊ฐ์ฒด๋?
- ๊ฐ์ฒด๋ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ํฌํจํ๋ ๊ฐ๋
์ด๋ค.
- ํด๋์ค ํ์
์ผ๋ก ์ ์ธ๋ ๊ฒ๋ค์ ๊ฐ์ฒด(Object)๋ผ๊ณ ํ๋ค.
โถ๏ธ ์ธ์คํด์ค๋?
- ํด๋์ค๋ฅผ ์ด์ฉํด์ ๋ง๋ค์ด๋ด๋ ์๋ก ๋ค๋ฅธ ์์ฑ์ ๊ฐ์ฒด๋ฅผ ์ง์นญํ๋ ์ฉ์ด
- ํด๋์ค ํํ๋ก ์ค๊ณ๋ ๊ฐ์ฒด๋ฅผ ์ค์ฒดํํ๋ฉด ์ธ์คํด์ค๊ฐ ์๊ธด๋ค.
- ์ธ์คํด์ค๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ , ์ฃผ์๋ฅผ ํ ๋น๋ฐ๋๋ค.
- ํด๋์ค๋ ์ข
์์ฅ์ ๋ถ๊ณผํด์ ์ค์ฒดํํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค ๋์ผ ์ ๊ทผํด์ ์ธ ์ ์๋๋ฐ ํด๋์ค ํ์
์ผ๋ก ์ ์ธ๋ ๊ฐ์ฒด๋ผ๋ ๊ฒ์ ์ค์ฒดํํด์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ ๊ฒ์ ์ธ์คํด์ค๋ผ๊ณ ํ๋ค.
- ์์ผ๋ก ์ธ์คํด์ค๋ค์ ๊ฐ์ง๊ณ ํด๋์ค์ ์๋ ์ ๋ณด๋ ํ์์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
- ์ธ์คํด์ค๋ฅผ ๋ด์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ณ์๋ช
๋ค์ '.(์ฐธ์กฐ์ฐ์ฐ์)'์ ์ฐ์ ํ ์ฐธ์กฐํ๋ ค๋ ์์ฑ์ ์ด๋ฆ์ ์ด๋ค.
-> ๋ณ์๋ช
.์์ฑ๋ช
โถ๏ธ ํด๋์ค๋ฅผ ์ค์ฒดํํ๊ธฐ
- ์ ๋ณด์ ํ์๋ฅผ ์์ฑํ ํด๋์ค๋ฅผ ์ค์ฒดํํด์ ํ๋ก๊ทธ๋จ์ ๋ก๋ฉํ๋ค. (๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ)
- ์ ๋ณด๊ฐ ํ์๊ฐ ๊ทธ๋๋ก ๋ก๋ฉ๋๋๊ฒ์ด ์๋๋ผ ์์น์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉํ๋ค.
- ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด์ ์์น์ ๋ณด๋ฅผ ๋ณ์์ ์ ์ฅํด๋๊ณ , ํ์ํ ๋ ์ฐธ์กฐํ๋ค.
โถ๏ธ ์์ ์ฝ๋
fun main() {
var a = Person("๋ฐ๋ณด์", 1990)
var b = Person("์ ์ ๊ตญ", 1997)
var c = Person("์ฅ์์", 2004)
println("์๋
ํ์ธ์. ${a.birthYear}๋
์ ${a.name}์
๋๋ค.")
println("์๋
ํ์ธ์. ${b.birthYear}๋
์ ${b.name}์
๋๋ค.")
println("์๋
ํ์ธ์. ${c.birthYear}๋
์ ${c.name}์
๋๋ค.")
}
class Person(var name: String, val birthYear: Int)
fun main() {
var a = Person("๋ฐ๋ณด์", 1990)
var b = Person("์ ์ ๊ตญ", 1997)
var c = Person("์ฅ์์", 2004)
a.introduce()
b.introduce()
c.introduce()
}
class Person(var name: String, val birthYear: Int) {
fun introduce() {
println("์๋
ํ์ธ์. ${birthYear}๋
์ ${name}์
๋๋ค.")
}
}
- Character ํด๋์ค๋ฅผ ๊ฐ์ฒดํํด์ ๋ ๊ฐ์ง ์บ๋ฆญํฐ๋ฅผ ๋ง๋ค์ด๋ณด์.
fun main() {
var magicianOne = Character("๋ถ๋ง๋ฒ์ฌ", "red", 180.2)
println("${magicianOne.name}์ ๋จธ๋ฆฌ์์์ ${magicianOne.hairColor}์
๋๋ค")
magicianOne.fireBall()
var magicianTwo = Character("๋๋ง๋ฒ์ฌ", "blue", 162.2, 25, "์ฌ")
println("${magicianTwo.name}์ ๋จธ๋ฆฌ์์์ ${magicianTwo.hairColor}์ด๊ณ ๋์ด๋ ${magicianTwo.age}์
๋๋ค.")
magicianTwo.fireBall()
}
class Character {
var name:String = ""
var hairColor:String = ""
var height:Double = 0.0
var age:Int = 0
var gender:String = ""
constructor(_name:String, _hairColor:String, _height:Double) {
println("${_name}์ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_hairColor}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_height}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
name = _name
hairColor = _hairColor
height = _height
}
constructor(_name:String, _hairColor:String, _height:Double, _age:Int, _gender:String) {
println("${_name}์ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_hairColor}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_height}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_age}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
println("${_gender}๋ฅผ ์์ฑ์๋ก ๋๊ฒผ์ด์")
name = _name
hairColor = _hairColor
height = _height
age = _age
gender = _gender
}
fun fireBall() {
println("ํ์ด์ด๋ณผ!")
}
fun compositing(device1:String, device2:String): String {
var device3 = device1 + device2
println("์๋ก์ด ๋ฌด๊ธฐ์ธ ${device3}์
๋๋ค")
return device3
}
}