지난 시간까지는 간단한 코틀린 코딩 방법과 타이머 만드는 방법까지 설명드렸습니다. 이번 시간부터는 본격적으로 코틀린과 자바의 차이점을 다뤄보려고 합니다. 제가 가장 익숙해지기 힘든 부분이기도 했고 자바와는 다른 부분이 너무 많아서 조금 고생했던 부분이기도 합니다. 바로 클래스 생성 부분이죠.
코틀린은 자바와는 전혀 다른 방식으로 클래스 생성자와 클래스 내부 변수를 만듭니다. 코틀린 언어의 간결하다는 특징을 여실히 보여주는 가장 대표적인 부분이라고 저는 생각합니다. 자바에 익숙한 분이시면 조금 의아할 수도 있지만 익숙해지시면 더 간결하고 편하게 사용할 수 있죠.
1. 코틀린에서의 클래스 생성 방법
class Test()
{}
코틀린에서 클래스를 생성하는 방법은 평범합니다. 그냥 다른 언어에서 클래스를 생성하듯 class 이름 대괄호 순으로 클래스를 생성해주면 되죠. 코틀린에서는 default 스코프가 public으로 설정되어 있기 때문에 클래스 앞에 따로 public을 적어줄 필요도 없습니다.
만약 다른 클래스를 상속받고 싶다면 콜론[:]을 추가한 뒤 그 뒤에 상속받고 싶은 클래스를 적어 넣으면 됩니다.
인터페이스를 추가할 때에는 클래스 이름 뒤에(상속받은 클래스가 있다면 해당 클래스 뒤에) 컴마[,]를 추가한 뒤 적어줍니다.
class Test():JLabel(),EventListener
{}
위 코드가 인터페이스와 상속을 모두 적용해본 코틀린 클래스입니다. 부모 생성자 호출의 경우 상속 클래스의 괄호 안에 적어 넣어주면 생성자가 호출될 때 자동으로 호출됩니다. 이 부분은 나중에 설명드리겠습니다.
2. 코틀린에서 매개변수 생성 방법
코틀린은 클래스에 전달될 매개 변수를 생성할 때 클래스 이름 바로 옆에 괄호() 안에 생성할 수 있습니다. 바로 아래 사진처럼 말이죠.
위 사진처럼 변수를 생성하면 클래스를 생성할 때 매개변수로 집어넣어줄 때 따로 클래스 내부 변수에 저장해주는 코드를 생성자에 집어넣어 줄 필요가 없습니다. 즉 자바와 같이 프로그래머가 변수를 직접 옮겨주지 않아도 클래스 내부 변수에 저장되어 편하다고 생각할 수 있겠죠.
위 코드를 코틀린 코드와 자바 코드로 각각 작성해보면 아래와 같습니다.
코틀린
class Test(
private var num:Int,
private var name:String
)
자바
public class Test {
private int num;
private String name;
public Test(int num,String name)
{
this.num = num;
this.name = name;
}
}
자바의 경우 생성자 내부에 코드를 더 적어 넣어줘야 하는 불편함도 있고 코드 길이도 코틀린이 더 간결합니다.
위와 같이 클래스 매개변수에 var/val 형식으로 변수를 형성하지 않는다면 생성자에서만 사용 가능한 변수가 됩니다. 즉 생성자가 실행된 뒤 사라지는 변수로 만들어 줄 수 있습니다. 아래 사진을 보실까요?
위 사진을 보면 생성자[init]가 아닌 다른 함수를 만들어 변수를 호출하니 붉은 색으로 표시되며 오류가 발생합니다. 이처럼 클래스 매개변수의 생성 방식에 따라 변수의 생명주기를 정해줄 수 있습니다. 이제 생성자로 넘어가봅시다.
3. 코틀린에서의 생성자 init()
코틀린에서는 클래스 이름으로 생성자를 만들지 않습니다. 위에서 잠시 보여드렸던 것처럼 init() 함수를 통해 생성자를 만들어주죠. 또 생성자는 클래스가 받는 매개변수를 그대로 호출할 수 있습니다.
Init은 그 자체로 키워드이기 때문에 따로 앞에 뭘 적어주거나 하지 않아도 됩니다. 클래스가 받은 모든 매개변수를 사용할 수 있고 이곳에서 생성자에서만 가능한 작업을 할 수 있습니다.
하지만 init으로 생성 가능한 건 기본 생성자뿐입니다. 그래서 다른 매개변수를 받는 생성자를 만드는 생성자 오버 로딩은 constructor이라는 키워드를 통해 가능합니다.
해당 부분은 다음 강의에서 진행해보도록 하겠습니다.
이번 포스팅에서는 코틀린에서의 클래스에 대해 알아보았습니다. 자바를 배운 직후 코틀린을 처음 사용했을 때 코틀린에서의 클래스 부분 때문에 조금 애먹었던 기억이 나는군요.
근데 최근에는 자바보다 더 편하게 코딩할 수 있는 것 같아 좋습니다.
그럼 이번 포스팅은 여기에서 마치도록 하고 다음에 코틀린 생성자 constructor으로 찾아뵙도록 하겠습니다.
긴 글 읽어 주셔서 감사합니다.
이 글의 저작권은 전적으로 작성자인 P_Emblem에게 있으며
허락 없는 사용을 금합니다.
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin][8]코틀린 클래스 생성자 오버로딩 – constructor (0) | 2021.01.19 |
---|---|
[Kotlin][6]코틀린 타이머 만드는 방법[강좌] (0) | 2020.04.07 |
[Kotlin][5]코틀린 readline()과 자료형 변환 방법 (0) | 2020.04.06 |
[Kotlin][4]코틀린 timer 함수 기본 사용법과 println, print의 차이에 대하여 (0) | 2020.04.05 |
[Kotlin][3]코틀린 자료형 선언 방법 및 nullable 변수 만드는 방법 (0) | 2020.01.02 |
[Kotlin][2]코틀린 ide 설치 및 신규 프로젝트 생성방법 (0) | 2019.11.06 |