객체와 인스턴스

황승현·2023년 12월 7일
0

코틀린 강의 정리

목록 보기
13/36

객체(Object)

  • 모든 인스턴스를 포함하는 개념

  • 클래스 타입으로 선언된 것 = 객체(Object)

인스턴스(Instance)

  • 클래스형태로 설계된 객체를 실체화하면 인스턴스가 생성

  • 인스턴스는 메모리 공간을 차지

클래스 실체화

  • 정보와 행위를 작성한 클래스를 실체화해서 프로그램에 로딩 (메모리에 적재)
  • 정보가 행위가 그대로 로딩되는것이 아니라 위치정보를 메모리에 로딩
  • 프로그램은 객체의 위치정보를 변수에 저장해두고, 필요할 때 참조
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, _hairColor, _height와 같이 생성자에 변수를 넘기는 경우에 사용함
    constructor(_name:String, _hairColor:String, _height:Double) {
        println("${_name}을 생성자로 넘겼어요")
        println("${_hairColor}를 생성자로 넘겼어요")
        println("${_height}를 생성자로 넘겼어요")
				name = _name
				hairColor = _hairColor
				height = _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
    }
}

0개의 댓글