프로그래밍 언어/코틀린

코틀린 12. 클래스

닉네임못짓는사람 2020. 12. 24. 02:00
반응형

이번 글에서는 클래스에 대해서 알아보도록 하겠습니다.

클래스


클래스는 간단하게 말하면 어떠한 기능을 가진 '실체'를 만들기 위한 '설계도'라고 할 수 있습니다.

흔히들 붕어빵 틀을 많이 이야기하는데, 붕어빵 모양으로 만들어져있는 틀을 '클래스'

이를 사용해 만들어지는 실체인 붕어빵을 '객체'또는 '클래스의 인스턴스'라고 말합니다.

 

말로 설명하기보단 직접 클래스를 만들어가면서 클래스란 무엇인가에 대해 알아봅시다.

class TV(){
    var width = 100
    var height = 100
    var power = false
    var channel = 1
    var volume = 0
}

위와 같이 TV를 만들기 위한 설계도인 TV클래스를 하나 만들어봅시다.

클래스는 기본적으로 속성(변수)와 함수(기능)을 가질 수 있습니다.

저희가 만들 TV클래스의 경우 기본적으로 화면의 크기, 전원, 채널, 볼륨 등의 속성을 가지고 있습니다.

 

그러면 이미 저희는 기능은 없지만 속성은 가지고있는 TV의 설계도를 다 만든것입니다.

이를 통해 실제 TV인 '객체'를 만들어보도록 합시다.

여기서 객체는 클래스를 통해 만들어낸 '실체'이며, 다른말로 'TV클래스의 인스턴스'라고 할 수 있습니다.

fun main() {
    var t1 = TV()
}

class TV(){
    var width = 100
    var height = 100
    var power = false
    var channel = 1
    var volume = 0
}

객체를 만드는 방법은 변수선언처럼 변수명을 정하고, "클래스명()"과 같이 만들어낼 수 있습니다.

이렇게 TV객체인 t1을 하나 만들어봤는데, 지금 상태로는 아무런 기능도 없기때문에 따로 할 수 있는게 없습니다.

때문에 다음에는 클래스의 기능인 '함수'를 추가해보도록 합시다.

fun main() {
    var t1 = TV()
    t1.powerChange()
}

class TV(){
    var width = 100
    var height = 100
    var power = false
    var channel = 1
    var volume = 0
    
    fun powerChange(){
        power = !power
        if(power)
        	println("On")
        else
        	println("Off")
    }
}

이렇게 TV클래스에 powerChange라는 전원을 키는 함수를 추가해봤습니다.

이 함수를 실행시킬 땐 TV클래스로 만든 객체인 t1을 통해서 호출하시면 됩니다.

 

이렇게 클래스를 통해서 만들어진 객체는 당연하게도 모두 독립적입니다.

예를 들어 TV클래스를 통해 t1과 t2객체를 만들고, t1에서 powerChange를 호출한다고 생각해봅시다.

그러면 이때 t1의 power는 true가 되어있지만, t2의 power는 그대로 초기값인 false입니다.

fun main() {
    var t1 = TV()
    var t2 = TV()
    t1.powerChange()
    
    println(t1.power)
    println(t2.power)
}

class TV(){
    var width = 100
    var height = 100
    var power = false
    var channel = 1
    var volume = 0
    
    fun powerChange(){
        power = !power
        if(power)
        	println("On")
        else
        	println("Off")
    }
}

이제 우리는 TV라는 클래스를 통해서 언제든지 객체를 찍어낼 수가 있게되었습니다.

이외에도 TV객체에 여러분이 직접 필요할 것 같은 기능을 넣어보시는 것도 좋을 것 같습니다.

 

클래스는 객체지향언어에서 매우 핵심적인 개념이기 때문에

객체지향언어를 제대로 사용하기 위해선 클래스에 대해서 정확히 파악하셔야합니다.

 

이번 글은 이 정도로 마치도록 하겠습니다.

감사합니다.

반응형

'프로그래밍 언어 > 코틀린' 카테고리의 다른 글

코트린 14. 상속  (0) 2020.12.25
코틀린 13. 생성자  (0) 2020.12.24
코틀린 11. 입출력  (0) 2020.12.23
코틀린 10. 흐름제어  (0) 2020.12.23
코틀린 9. 반복문  (0) 2020.12.22