[TIL] 2023.11.30

Gahyeon Leeยท2023๋…„ 11์›” 30์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
14/47
post-thumbnail

๐Ÿค” ์ƒ์„ฑ์ž

"ํด๋ž˜์Šค(์„ค๊ณ„๋„)๋ฅผ ์‹ค์ฒดํ™”ํ• ๋•Œ ์ตœ์ดˆ๋กœ ์‹คํ–‰ํ•  ๋กœ์ง์„ ์ž‘์„ฑ"

  • ํด๋ž˜์Šค๋Š” ๊ฒฐ๊ตญ '์–ด๋–ป๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค'ํ•˜๋Š” ์ข…์ž‡์žฅ ๊ฐ™์€ ๊ฒƒ ์ด์–ด์„œ ์‹ค์ฒดํ™”ํ•ด์•ผ๋งŒ(๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค ๋†”์•ผ๋งŒ) ์ ‘๊ทผ(์˜ˆ๋ฅผ ๋“ค์–ด, ๋จธ๋ฆฌ ์ƒ‰์ƒ, ํ‚ค, ์ด๋ฆ„ ๋“ฑ์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ค๊ธฐ)ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํด๋ž˜์Šค๋ฅผ ์‹ค์ฒดํ™” ํ•  ๋•Œ(์ด ํด๋ž˜์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ๋•Œ) ์ตœ์ดˆ๋กœ ํ•ญ์ƒ ์ด๋Ÿฐ ์ž‘์—…์„ ํ•˜๋ผ๊ณ  ๋ฏธ๋ฆฌ ์„ธํŒ…ํ•ด ๋†”์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ์ƒ์„ฑ์ž์ด๋‹ค.
  • ๊ธฐ๋ณธ ์ƒ์„ฑ์ž์™€ ๋ช…์‹œ์  ์ƒ์„ฑ์ž๊ฐ€ ์กด์žฌ.
  • ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋Š” ์ด์ „๊นŒ์ง€ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋˜ ํ–‰์œ„์™€ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.
  • ๋ช…์‹œ์  ์ƒ์„ฑ์ž๋Š” ์ฃผ ์ƒ์„ฑ์ž์™€ ๋ถ€ ์ƒ์„ฑ์ž๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ–ถ๏ธ Kotlin์˜ ์ƒ์„ฑ์ž ์ข…๋ฅ˜

1. ์ฃผ ์ƒ์„ฑ์ž(init)

  • ์ •๋ณด์ธ ํ”„๋กœํผํ‹ฐ์™€ ํ–‰์œ„์ธ ๋ฉ”์†Œ๋“œ ์‚ฌ์ด์— init์ด ๋“ค์–ด๊ฐ„๋‹ค.
  • ํด๋ž˜์Šค ์„ ์–ธ๋ถ€์— ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œํ•œ๋‹ค.
  • init์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง์ ‘ ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค.
  • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘์ ์œผ๋กœ ๋„˜๊ฒจ์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, class์— ๋”ฑ ํ•˜๋‚˜๋งŒ ๋„˜๊ฒจ์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. init์„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ ์ƒ์„ฑ์ž๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ํ˜•ํƒœ๋งŒ(์•„๋ž˜ ์˜ˆ์—์„œ๋Š” ๋ฌด์กฐ๊ฑด name, haircolor, height๋งŒ) ๋ฐ›๋Š” ์ƒ์„ฑ์ž๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
// ์ฃผ ์ƒ์„ฑ์ž์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ(๊ธฐ๋ณธ ์ƒ์„ฑ์ž์™€ ๋‹ค๋ฅธ ์  : ํด๋ž˜์Šค ์„ ์–ธ๋ถ€์— ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ, init)

fun main() {

}

// ํด๋ž˜์Šค ์„ ์–ธ๋ถ€์— ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œํ•จ
class Character(_name:String, _hairColor:String, _height:Double) {    // ์ด Character๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ์‹ค์ฒดํ™” ์ž‘์—…์„ ํ•  ๋•Œ์—๋Š” ๋ฐ˜๋“œ์‹œ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ด ํด๋ž˜์Šค์˜ ์ด๋ฆ„, ๋จธ๋ฆฌ ์ƒ‰์ƒ๊ณผ ํ‚ค๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ์ค˜์„œ ์„ธํŒ…ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ(๋ฉ”์†Œ๋“œ ๋ถ€๋ฅผ ๋•Œ๋ž‘ ๋˜‘๊ฐ™์Œ)
    var name:String = ""
    var hairColor:String = ""
    var height:Double = 0.0

		// ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ๋„˜๊ธฐ์ง€์•Š์Œ
    init {         
        println("๋งค๊ฐœ๋ณ€์ˆ˜์—†๋Š” ์ƒ์„ฑ์ž ์‹คํ–‰ ์™„๋ฃŒ!")    // ์‹ค์ฒดํ™” ๋  ๋•Œ์˜ ์ฝ”๋“œ๊ฐ€ init์— ์žˆ๋‹ค!
    }										  // ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ธฐ ์ „์— ์ด ์„ค๊ณ„๋„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์บ๋ฆญํ„ฐ๋ฅผ ์ฐ์–ด ๋‚ผ ๋•Œ ํ•ญ์ƒ ์ตœ์ดˆ๋กœ ์ด ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰์ด ๋œ๋‹ค!

    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, _hairColor, _height์™€ ๊ฐ™์ด ์ƒ์„ฑ์ž์— ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•จ
    constructor(_name:String, _hairColor:String, _height:Double) {		// ํด๋ž˜์Šค ์„ ์–ธ๋ถ€์— ๋ช…์‹œํ•˜์ง€ ์•Š๊ณ , constructor๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ class ์•ˆ์— (๋ฉ”์†Œ๋“œ์ฒ˜๋Ÿผ) ์„ ์–ธํ•จ
        println("${_name}์„ ์ƒ์„ฑ์ž๋กœ ๋„˜๊ฒผ์–ด์š”")								// ๋ฉ”์†Œ๋“œ ๊ฐ™๋‹ค๊ณ  ํ•ด์„œ constructor()๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์€ ์•„๋‹˜. ํด๋ž˜์Šค๋ฅผ ์‹ค์ฒดํ™”ํ•  ๋•Œ constructor์— _name, _hairColor, _height๋ฅผ ๋„ฃ์–ด ์คŒ
        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 = ""			// ์ด ํด๋ž˜์Šค๋Š” 5๊ฐœ์˜ ์ •๋ณด(๋ณ€์ˆ˜)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

    // ๋ช…์‹œ์  ์ƒ์„ฑ์ž (Constructor) --> ์ด ํด๋ž˜์Šค๋ฅผ ์‹ค์ฒดํ™” ํ•  ๋•Œ ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ์ƒ์„ฑ์ž ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ
    // _name, _hairColor, _height์™€ ๊ฐ™์ด ์ƒ์„ฑ์ž์— ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•จ
    constructor(_name:String, _hairColor:String, _height:Double) {
        println("${_name}์„ ์ƒ์„ฑ์ž๋กœ ๋„˜๊ฒผ์–ด์š”")
        println("${_hairColor}๋ฅผ ์ƒ์„ฑ์ž๋กœ ๋„˜๊ฒผ์–ด์š”")
        println("${_height}๋ฅผ ์ƒ์„ฑ์ž๋กœ ๋„˜๊ฒผ์–ด์š”")
    }
    // _name, _hairColor, _height, _age, _gender์™€ ๊ฐ™์ด ์ƒ์„ฑ์ž์— ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•จ
    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 ์ฃผ์†Œ์— ๊ฐ€์„œ name๊ณผ hailColor๋ฅผ ์ถœ๋ ฅ.(์–ด๋–ค ์ฃผ์†Œ์— ๊ฐ€์„œ ๋ญ˜ ํ•˜๋ผ๊ณ  ํ•  ๋•Œ '.'์œผ๋กœ ์—ฐ๊ฒฐ)
		magicianOne.fireBall()

		// ๋ƒ‰๋งˆ๋ฒ•์‚ฌ๋กœ ๊ฐ์ฒดํ™”
    var magicianTwo = Character("๋ƒ‰๋งˆ๋ฒ•์‚ฌ", "blue", 162.2, 25, "์—ฌ")		// magicianTwo์— ๊ฐ์ฒด ์ •๋ณด๋ฅผ ๋„ฃ์„ ๊ฒƒ. 5๊ฐœ์งœ๋ฆฌ ์ƒ์„ฑ์ž๋ฅผ ๋ถ€๋ฅด๊ณ  ์žˆ์Œ. -> 2๋ฒˆ์งธ ๋ถ€ ์ƒ์„ฑ์ž ์‹คํ–‰
		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 = ""			// 5๊ฐœ์˜ ์ •๋ณด

    // ๋ช…์‹œ์  ์ƒ์„ฑ์ž (Constructor) ์ค‘ ๋ถ€ ์ƒ์„ฑ์ž 2๊ฐœ(๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์„œ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ์Œ)
    // _name, _hairColor, _height์™€ ๊ฐ™์ด ์ƒ์„ฑ์ž์— ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•จ
    constructor(_name:String, _hairColor:String, _height:Double) {
        println("${_name}์„ ์ƒ์„ฑ์ž๋กœ ๋„˜๊ฒผ์–ด์š”")
        println("${_hairColor}๋ฅผ ์ƒ์„ฑ์ž๋กœ ๋„˜๊ฒผ์–ด์š”")
        println("${_height}๋ฅผ ์ƒ์„ฑ์ž๋กœ ๋„˜๊ฒผ์–ด์š”")
				name = _name
				hairColor = _hairColor
				height = _height			//_name, _hairColor, _height์— ๋ฐ›์€ ์ •๋ณด๋ฅผ ์œ„์˜ name, hairColor, height์— ๋Œ€์ž…(=ํด๋ž˜์Šค๋ฅผ ์‹ค์ฒดํ™”ํ•  ๋•Œ _name, _hairColor, _height๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ name, hairColor, height์— ์„ธํŒ…ํ•ด ์คŒ) -> ํด๋ž˜์Šค๋ฅผ ์‹ค์ฒดํ™”ํ•˜์ž๋งˆ์ž name, hairColor, height๊ฐ€ ์„ค์ •๋จ
    }
    // _name, _hairColor, _height, _age, _gender์™€ ๊ฐ™์ด ์ƒ์„ฑ์ž์— ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•จ
    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
    }
}
profile
์ฝ”๋ฆฐ์ด ๊ฐ•์•„์ง€ ์ง‘์‚ฌ๐Ÿถ

0๊ฐœ์˜ ๋Œ“๊ธ€