본문 바로가기
Programming/Kotlin

[Kotlin] 코틀린 뽀개기 - 객체지향 언어인 코틀린!

by 코딩의성지 2019. 11. 27.

안녕 여러분 ~~!!

 

진짜 오랜만에 Kotlin 글을 쓴다.

 

혹시나 다들 까먹으셨을까봐 !! 링크를 올린다.

 

https://devkingdom.tistory.com/25

https://devkingdom.tistory.com/26

https://devkingdom.tistory.com/29

https://devkingdom.tistory.com/30

https://devkingdom.tistory.com/31

https://devkingdom.tistory.com/32

 

혹시나 코틀린 기초를 까먹으셨다면 쭉 정독하고 오기를 바란다 !!

 

자바를 공부해 보신분들은 자바가 객체지향 언어라는 걸 알고 계실 거다. 객체지향언어에 대한 기본 개념은 다들알고 계시겠지만, 기억안나시는 분을 위해 간단하게 개념만 이야기하고 가겠다.

 

객체 지향 프로그래밍이란?

 

 객체지향 프로그래밍 (OOP) 을 설명할 때 , 절차지향 프로그래밍이랑 자주 비교하곤 한다. 대표적인 절차지향 언어는 C가 있는데, C 언어는 명령어의 목록이 절차대로 수행되는 언어이다. 어렵게 말한 것 같으니 쉽게 다시 말해주겠다. 함수를 선언하고 그 함수를 호출하면 호출한 순서대로 쭉 실행된다는 말이다.

 

 반면 객체 지향 언어 ( 대표적으로 자바가 있는건 다들 아실거라 생각한다.) 는 절차지향언의 시각에서 벗어나 독립된 단위인 "객체"들이 메시지를 주고받고 데이터를 처리하는 것을 의미한다.

 

 그렇다면 이 객체 (Object) 란 무엇일까? 객체를 이야기 하기 위해서는 Class 도 알고 있어야한다. 여기는 코딩 초보분들을 위한 블로그이니 쉽게 설명하겠다.

 

Class 는 붕어빵 틀이고, Object는 붕어빵이다.

붕어빵은 슈크림 맛도 있고, 팥 맛도 있고, 초코 맛도 있고, 김치 맛(?)도 있다.

 

진짜 있다 ...

 

붕어빵 틀은 하나지만 거기서 만들어지는 붕어빵은 제각각이다. 즉, Class라는 틀을 가지고 하나의 독립된 Object를 만들어 내는 것이다.( 와 설명 죽인다~ ><)

대충 무슨말인지 알겠지? 우리는 객체지향이라는 개념을 공부하러 온게 아니니 이정도만 설명하고 넘어가겠다.

 

 

Kotlin 에서 Class 사용하기

 

자 !! 두말할 필요 있나 !! 예제를 통해 Class를 공부해보자.

 

1
2
3
4
5
6
7
8
9
fun main(args : Array<String>) {
    var tst1 = TstClass1();
}
 
class TstClass1 {
    init {
        println("init TstClass1")
    }
}
 

 

아주 간단하게 Class를 이용해 객체를 만들어 봤다. Kotlin에서는 클래스 내부에 init이라는 키워드를 이용해서 객체를 초기화 시킬수 있다.

 

실행해보면 ...

 

 

클래스가 생성되면서 init 내부의 로직이 수행되는 것을 볼 수 있다.

 

그리고 클래스는 생성자를 만들어서 사용할 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
fun main(args :Array<String>) {
    var tst2 = TstClass2("ji"30);
 
    println("tst2.name : ${tst2.name}");
    println("tst2.age : ${tst2.age}");
}
 
class TstClass2 constructor(name: String, age : Int) {
    var name = name;
    var age = age;
}
 
 
 

 

클래스 명 옆에 constructor( 파라미터1: 타입, 파라미터2: 타입 ....)  이런식으로 디폴트 생성자를 만들 수 있다. 간단하지?

이걸 실행해보면 ...!

 

 

생성한 객체에 값이 잘 들어가 있는걸 볼 수 있다.

 

그리고 한 클래스에 추가적으로 생성자를 여러개 만들 수 도 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fun main(args :Array<String>) {
    var tst3 = TstClass3("hee"26);
    var tst4 = TstClass3("ri"1,"010-1234-1234");
 
    println("tst3.name : ${tst3.name}");
    println("tst3.age : ${tst3.age}");
 
    println("tst4.name : ${tst3.name}");
    println("tst4.age : ${tst3.age}");
}
 
class TstClass3 constructor(name: String, age : Int) {
    var name =name;
    var age = age;
    var phoneNumber = "";
 
    constructor(name: String, age : Int, phoneNumber : String) : this(name, age) {
        this.phoneNumber = phoneNumber;
    }
}
 
 

 

이건 자바랑 좀 달라서 살짝 어려울수도 있겠다. 그래도 설명들어보면 간단하다. 

일단 이 클래스 역시 디폴트 생성자는 constructor(name: String, age : Int) 이거다. 

 

그리고 constructor(name: String, age : Int, phoneNumber : String) 이렇게 파라미터 세개짜리 생성자를 만들려고 할때,

무조건 필요한건 디폴트 생성자인데!! 이걸 this(name, age) 로 가져온다. 

즉 , name , age 는 디폴트 생성자를 이용해서 변수 값을 할당해주고 , phoneNumber만 추가 생성자의 파라미터에서 값을 할당해주는 것이다.

 

자~~ 설명은 여기까지하고 프로그램을 실행해주면 !!

 

 

 

이렇게 tst3 객체는 디폴트 생성자로 객체가 생성된 것을 !

tst4 객체는 추가 생성자를 이용해서 객체가 생성된 것을 볼 수 있다 ㅎㅎ

 

 

오늘은 이정도만 공부하자 !! 그럼 모두 즐거운 코딩하자!!

 

반응형

댓글