728x90
반응형
코틀린도 다른 객체 지향 언어와 마찬가지로 클래스를 사용할 수 있다.
class Student(name:String, age:Int){
val sName:String = name
val sAge:Int = age
fun printName():String{
return sName
}
fun printAge():Int{
return sAge
}
}
클래스의 멤버 변수를 프로퍼티(property)라고 하고 멤버 함수를 메소드(method)라고 한다.
클래스를 정의할 때 생성자의 경우 주 생성자와 부 생성자로 나뉜다.
위의 Student 클래스는 주 생성자이고 부 생성자는 클래스 내부에서 constructor를 사용하여 만들 수 있다.
코틀린 클래스에는 몇 가지 규칙이 존재한다.
프로퍼티는 반드시 초기화를 해야한다.
프로퍼티를 만드려면 다음 두 가지 중 하나를 반드시 해야한다.
- 선언과 동시에 초기화를 한다.
- 선언을 해두고 init 블록 안에서 초기화를 한다.
1번의 경우 위 Student 클래스 예시를 보면 되고
2번의 경우 아래와 같이 하면 된다.
class Student(name:String, age:Int){
val sName:String
val sAge:Int
init{
sName=name
sAge=age
}
fun printName():String{
return sName
}
fun printAge():Int{
return sAge
}
}
두 방법을 사용하지 않고 메소드에서 초기화를 한다는 것은 불가능하다.
주 생성자의 파라미터는 프로퍼티를 초기화 할 때만 사용할 수 있다.
위에서 프로퍼티를 초기화하는 방법 두 가지를 소개했는데 이렇게 프로퍼티를 초기화할 때만 사용할 수 있다.
아니면 따로 프로퍼티를 생성하지 않고 파라미터 자체를 프로퍼티로 사용하는 방법도 있다.
파라미터 앞에 val을 붙이면 된다.
class Student(val name:String, val age:Int){
fun printName():String{
return name
}
fun printAge():Int{
return age
}
}
프로퍼티 혹은 메소드에 가시성을 줄 수도 있다.
- public : 어디에서든 멤버에 접근 가능
- internal : 모듈 내부에서만 접근 가능
- protected : 해당 클래스와 하위 클래스에서만 접근 가능
- private : 해당 클래스 내부에서만 접근 가능
내부 클래스
클래스 내부에 inner class를 사용하여 클래스를 선언하면 내부 클래스가 된다.
내부 인스턴스의 경우 외부 인스턴스에 접근할 수 있다.
728x90
반응형
'컴퓨터 언어 > Kotlin' 카테고리의 다른 글
[Kotlin] 영역 함수 (run, let, with, apply, also) (0) | 2022.12.21 |
---|---|
[Kotlin] 고차 함수와 람다 함수 (0) | 2022.12.20 |
[Kotlin] try-catch문을 활용한 예외 처리 (finally) (0) | 2022.12.07 |
[Kotlin] 내포된 반복문과 레이블 (0) | 2022.12.06 |
[Kotlin] null 가능성 체크 (엘비스 연산자, !!, ?) (0) | 2022.11.29 |
댓글