내가 원하는 객체의 타입을 정의해 클래스를 만들 수 있다?
이전 블로깅에서 클래스와 멤버, 객체 등에 대해 이야기 하면서
코틀린에서 제공하는 IntRange, String을 사용한 함수들에 대해서 간단하게 알아보았는데,
오늘은 이에 대한 본격적인 내용에 대한 학습을 시작하게 될 것 같다.
오늘은 클래스에 대해서 자세히 알아볼 예정이다.
[ 클래스 ]
* 이전 블로깅 참고
클래스(class)
: 새로운 데이터 타입의 기초가 되는 프로퍼티와 함수를 정의
: 사용자 정의 타입
: 상태와 행동을 정의
이전 블로그에서는 클래스에 대한 이론적인 부분에 대해서 설명했다면,
이번에는 클래스를 생성하고 사용하는 방법에 대해 학습할 예정이다.
클래스 정의
: class 키워드 다음 클래스 이름 식별자 작성
: 클래스 이름 - 글자(A-Z, 대소문자, 한글 등)으로 시작하며, 두 번째 자리부터 숫자나 밑줄 포함 가능
: 클래스 본문(class body) - 중괄호({})를 사용해 클래스의 특성이나 행동 양식을 포함
멤버 함수
: 클래스 본문(class body) 안에 정의된 함수를 의미
: 객체를 가리키는 식별자를 지정하고 점(.)과 연산의 이름을 덧붙여 호출 가능
: 코틀린에서는 함수적인 특성 강조를 위해 함수라는 명칭으로 사용
// 클래스 정의
class Bus{
fun start() = "출발합니다."
fun stop() = "정차합니다."
fun speak()
= this.start() // this로 호출
+ " "
+ stop() // this 없이 호출
}
fun main(){
// 클래스 객체 생성
val bus1 = Bus();
val bus2 = Bus();
print(bus1) // 출력 결과 : Bus@314b1daa
print(bus2) // 출력 결과 : Bus@248b1adb
print(bus1.start()) // 출력 결과 : "출발합니다."
print(bus2.stop()) // 출력 결과 : "정차합니다."
}
1) @
: 클래스 출력 시 @ 앞은 클래스 이름, @ 뒤는 해당 객체의 메모리 위치(문자가 섞여 있지만 실제로는 숫자로 16진법으로 표현)를 나타냄
2) 멤버 함수 호출
: 객체를 가리키는 식별자를 지정하고 점(.)과 연산의 이름을 덧붙여 사용 가능
: 동일한 클래스 내의 함수 호출은 식별자 지정 없이 사용 가능하며, 클래스 밖에서는 식별자 지정이 필요
3) this
: 멤버 함수 안에서 this를 사용해 참조에 접근 가능
: 동일한 클래스에 속함 멤버 함수는 객체를 지정하지 않아도 멤버 이름만 사용하여 접근 가능
: this를 반드시 사용하지 않아도 된다면 불필요한 this는 사용하지 않는 것이 좋음
[ 오늘의 학습 소감 ]
오늘은 이미 지정되어 있는 클래스와 멤버 함수가 아닌 원하는 클래스를 만들어 객체로 생성하고 멤버 함수를 호출하는 방식에 대한 학습을 진행했다. 자바에서 학습했듯 클래스와 멤버 함수는 매우 많이 사용되고 이는 다양하고 수많은 방식의 기초가 된다고 생각하기 때문에 중요한 아톰 중 하나라고 생각된다. 물론, 오늘 학습이 쉬웠다는 것은 아니다,,, (실제로 이전 학습보다 어렵게 느껴졌다.) 그렇기에 더 확실하고 명확하게 이해하고 넘어가는 것이 중요한 학습 아톰이었다고 생각한다.
'공부 자료 > 코틀린[Kotlin]' 카테고리의 다른 글
[Atomic 19] 생성자 (0) | 2024.01.18 |
---|---|
[Atomic 18] 프로퍼티 (val & var) (0) | 2024.01.17 |
[Atomic 16] 객체는 모든 곳에 존재한다 (feat. 클래스/멤버 기본) (0) | 2024.01.15 |
[Atomic 14] 식과 문 (0) | 2024.01.14 |
[Atomic 13] in 키워드 (feat. 이터레이션의 in / 포함 여부 in) (1) | 2024.01.13 |