코틀린의 기본적인 클래스 사용법을 알아보도록 하겠습니다!
우선, 클래스는 '값'과 그 값을 사용하는 '기능'들을 묶어놓은 것입니다
기본 자료형들도 코틀린 내부에서는 모두 클래스로 만들어져 있습니다
클래스는 고유의 특징적인 값을 담는 변수인 속성과
기능을 구현한 함수로 이루어져 있습니다
클래스의 구조를 보기 위해 사람의 이름과 출생년도를 관리하는 클래스를 만들어 보도록 하겠습니다
fun main() {
}
class Person (var name: String, val birthYear: Int)
클래스의 이름은 Person이고, 괄호 안에 클래스가 가지는 속성으로 이름과 출생년도를 나열하였습니다
속성은 변수를 선언하는 것과 형태가 같습니다
함수 없이 속성만 갖춘 클래스는 위의 예시만으로 구현이 완료될 수 있습니다
클래스를 사용하기에 앞서 클래스는 '인스턴스'를 만드는 틀이라는 점을 이해해야 하는데요
인스턴스 (instance)란 클래스를 이용해서 만들어 내는 서로 다른 속성의 객체를 지칭하는 용어입니다
위의 예시에서 우리가 입력할 데이터로
1988년생 정해인,
1989년생 윤두준,
2004년생 장원영
이 있다면 프로그램에서는 '같은 Person 클래스'로 세 사람의 인스턴스를 만들어 사용하게 되는 것입니다
Person A instance : 정해인, 1988
Person B instance : 윤두준, 1989
Person C instance : 장원영, 2004
위의 예시에 인스턴스를 만들어보도록 하겠습니다
fun main() {
var a = Person("정해인", 1988)
var b = Person("윤두준", 1989)
var c = Person("장원영", 2004)
println("안녕하세요, ${a.birthYear}년생 ${a.name}입니다")
}
class Person (var name: String, val birthYear: Int)
/*출력
안녕하세요 1989년생 정해인입니다
*/
인스턴스를 만들 때는 변수(a)를 선언한 후 할당 연산자(=)를 쓰고 클래스의 이름(Person)을 적은 후
클래스 선언 시 적은 속성 순서대로 (name, birthYear) 괄호 안에 "정해인"과 1989 라는 값을 써주면 됩니다
이 인스턴스를 담은 변수를 사용하기 위해서는 변수명 뒤에 참조 연산자인 점(.)을 찍은 후 참조하려는 속성의 속성명을 적어주면 됩니다
출력값을 보면 출생년도와 이름이 제대로 찍히는 것을 확인할 수 있습니다
그런데 모든 Person 인스턴스가 위와 같은 형식으로 자기소개를 자주 해야한다면 매번 println을 쓰는 것은 너무 비효율적일 것입니다
그래서 이를 해결하기 위해서 자주 사용하는 공통적인 기능은 클래스 내에 함수로 넣어주게 됩니다
클래스에 함수를 추가해보도록 하겠습니다
fun main() {
var a = Person("정해인", 1988)
var b = Person("윤두준", 1989)
var c = Person("장원영", 2004)
a.introduce()
}
class Person (var name: String, val birthYear: Int) {
fun introduce() {
println("안녕하세요, ${birthYear}년생 ${name}입니다")
}
}
/*출력
안녕하세요 1989년생 정해인입니다
*/
Person클래스에 자기소개를 하는 introduce 함수를 추가하였습니다
이제 자기소개가 필요할 땐 인스턴스를 통해 함수를 호출하여 간편하게 자기소개를 할 수 있습니다
코틀린은 객체지향 언어를 기반으로 *함수형 언어의 장점을 흡수한 실용적인 언어입니다
따라서 객체지향의 기본 구조가 되는 클래스를 이해하는 것이 매우 중요할 것 같습니다
*함수형 언어란 순수함수를 조합하고 소프트웨어를 만드는 방식을 의미합니다
코틀린은 함수형 프로그래밍과 객체지향 프로그래밍을 모두 지원하는 '다중 패러다임 언어' 입니다
<클래스의 기본구조>는 여기서 마치도록 하겠습니다
*위 글은 유튜브 테크과학! DeMo님의 강좌를 참고하여 작성하였습니다
'Kotlin' 카테고리의 다른 글
[Kotlin] 09. 클래스의 상속 (0) | 2023.07.19 |
---|---|
[Kotlin] 08. 클래스의 생성자 (0) | 2023.07.18 |
[Kotlin] 06. 흐름제어와 논리연산자 (0) | 2023.07.17 |
[Kotlin] 05. 반복문과 증감연산자 (0) | 2023.07.16 |
[Kotlin] 04. 조건문과 비교연산 (0) | 2023.07.15 |