돌아오신 것을 환영합니다
이번 영상에서는 우리의 첫 클래스를 만들어 볼 것입니다
그리고 그 클래스로 객체를 만들어 보기도 할 것입니다
공식 문서에 가서 정확한 개념을 읽어보셔도 됩니다
하지만 앞서 말했듯 이 문서는 아직 우리가 알지 못하는 것을
당연히 알고 있을 것이라고 간주합니다
하지만 여러분께는 제가 있으며 제가 설명드릴 수 있습니다
Kotlin의 클래스들을 class 키워드로 선언됩니다
자
그럼 Person(사람)이라는 클래스도 만들어 볼 수 있습니다
하지만 저는 Person을 사용하지 않을 것이고
대신 Dog(강아지)를 사용해서 Dog 클래스를 만들어보겠습니다
저는 강아지를 키우는데 사실상 아내의 강아지에 가깝습니다
저는 동물을 매우 좋아하진 않지만 아무렴 좋습니다
그럼 Dog 클래스를 생성해 봅시다
프로젝트 안에 이 Project 탭이 있습니다
그리고 kotlin+java의 eu.tutorials.kotlinbasics 안에
새로운 클래스를 생성해 볼 것입니다
그러기 위해 스크롤을 조금 올려서 보여드리겠습니다
자 우클릭 New를 선택하고
Kotlin Class/File이 보입니다
좋습니다
이것을 선택하고 이름은 Dog로 합니다
클래스 이름은 단수형이어야 합니다
복수형을 사용하면 안 됩니다
좋습니다
그러니까 Dog(단수형) 대신 Dogs(복수형)을 사용하면 안 됩니다
좋습니다
Class를 생성해 볼 것입니다
이번에는 File이 아닙니다 Dog이라는 이름의 Class입니다
그럼 그것을 선택하면 Dog 클래스를 생성해 줍니다
그러면 강아지들이 할 수 있는 일들을 생각해 봅시다
강아지는 짖을 수 있고
산책을 갈 수도 있으며
많은 것들을 할 수 있습니다
물론 놀이를 할 수도 있습니다
이러한 것들이 강아지가 할 수 있는 일들의 예시입니다
그러면 다시 공식 문서로 돌아가서 스크롤을 조금 내려보면
클래스가 담을 수 있는 것들에 대한 설명이 있습니다
클래스는 "member"(멤버)라는 것을 담을 수 있습니다
말 그대로 member라고 불립니다
그리고 constructor(생성자)와 initializer block(초기화 블록)도 담을 수 있습니다
이는 다음 영상들에서 살펴볼 것입니다
함수를 담을 수도 있습니다
예를 들어 강아지가 짖도록 하고 싶으면 Bark(짖기)라는 함수를 만들어도 됩니다
그러면 Dog(강아지)가 짖을 것입니다
그리고 Property(프로퍼티)도 담습니다
Property는 쉽게 말해
속성이나 특성 같은 것입니다
그리고 Nested(중첩)과 Inner(내부) 클래스들도 있습니다
그러니까 클래스 안에 클래스를 생성할 수도 있는 것입니다
그리고 내부 클래스는 클래스의 두 가지 다른 방식이라고 할 수 있는데
다음 강의들에서 필요한 내용에 크게 벗어납니다
그리고 클래스는 객체 선언문들을 담을 수 있지만 이 또한 다루지 않을 것입니다
진도를 너무 많이 나가야 합니다
그러므로 우리가 중점으로 둘 것은 이 세 가지입니다
따라서 생성자와 초기화 블록, 함수 그리고 프로퍼티입니다
다른 주제들은 훨씬 더 심화 과정입니다
그럼 함수부터 시작해 보겠습니다
그리고 함수를 실행하기 위해서는 initializer라는 것이 필요합니다
정확히는 initializer block(초기화 블록)입니다
그러면 Dog 안에 함수를 생성해 봅시다
bark(짖기)라고 해봅시다
그리고 이 함수는 문장을 출력할 것입니다
"woof woof"(멍멍)으로 하겠습니다
그리고 ChatGPT로 준비한 이미지가 있습니다
자
귀여운 강아지가 있습니다
이게 아니었습니다
이것입니다
"멍멍"
"짖기 함슈"
함슈라니
재밌습니다
좋습니다
자 이 귀여운 강아지에게 bark 함수가 있습니다
이러한 기호가 무엇을 의미하는지는 모르겠지만
아무튼 함수입니다
그리고 귀여운 강아지입니다
이제 객체를 만들 준비가 되었습니다
이제 곧 배우게 될 내용입니다
그리고 이제 문제는 생성자 없이는 bark()를 실행할 수 없다는 것입니다
그러면 initializer를 만들어 봅시다
initializer란 무엇일까요?
이는 해당 클래스의 객체를 생성하는 순간 실행되는 코드라고 할 수 있습니다
그러면 클래스의 객체 또는 클래스의 인스턴스란 무엇일까요?
그것은 템플릿 혹은 블루프린트의 규칙을 기반으로 생성한 것들입니다
클래스가 템플릿/블루프린트인 것이고 객체는 그것을 가지고 생성된
무언가입니다
그러면 Basics 파일로 돌아가 봅시다
그리고 여기에 main() 함수 대신 Dog의 객체를 만들어 볼 것입니다
예를 들어 변수를 생성하여 Daisy라는 이름을 주겠습니다
제 강아지 이름입니다
Daisy는 Dog(강아지)여야 합니다
이런 식으로 말입니다
클래스로 객체를 만드는 것은 이렇게 간단합니다
여기서 Dog 클래스로 객체를 만든 것입니다
그리고 이는 객체이기도 하지만
동시에 인스턴스이기도 합니다
그래서 이러한 단어를 들으신다면 이 맥락에서 같은 뜻입니다
따라서 Dog 클래스로 인스턴스를 생성한 것입니다
그리고 이러면 아무 일도 일어나지 않습니다
확인해 봅시다
실행하여 확인해 보겠습니다
보시다시피 아무 일도 생기지 않습니다
코드가 없습니다
여기 bark라는 함수가 분명 있었습니다
하지만 보시다시피 회색 처리되는데 한 번도 사용되지 않기 때문입니다
그러면 init() 함수에서 사용해 봅시다
그러면 이 bark()는 우리가 Dog를 생성할 때 한 번 실행됩니다
그러니까 말하자면 Dog(강아지)가 태어날 때 자동으로 "멍멍"을 하는 것입니다
짖기 시작하는 것입니다
그러면 이 코드를 다시 실행해 봅시다
그러니까 Dog가 생성되자마자 "멍멍"을 출력합니다
자 그래서 Dog의 객체로써 Daisy를 생성했습니다 참고로 미니어처 푸들입니다
아마도 그럴 것입니다
그 다음 "멍멍"을 출력합니다
그리고 이 멋진 이미지를 살펴보면 강아지 객체 생성자가 삑하고 강아지를
생성합니다
좋습니다
강아지가 생성되었고 바로 그 다음
멍멍
강아지가 짖습니다
쉽게 말해서 이러한 원리인 것입니다
그러니까 흐름이
실행적인 측면에서 보면 main() 함수는 언제나 시작점입니다
그리고 이 시점에서 변수를 생성하고 그 변수에 값을 할당합니다
그리고 할당한 값은 Dog이라는 종류입니다
그러면 그 Dog가 생성되는 것입니다
그 후에 이 부분이 실행되면 Dog이라는 클래스가 강제로
생성자 init()을 실행하여 초기화하고 괄호 속 내용을
실행합니다
그리고 그 내용은 우리가 만든 이 메소드, 즉 함수를 실행하라고 합니다
여기서 만들었습니다
여기서 이 함수를 실행하라고 하는 것입니다
그럼 이곳으로 넘어가서
이 중괄호 속 내용을 실행합니다
println() 함수에
"멍멍"이 있습니다
자
물론 더 간단한 방법이 있었을 수도 있습니다
그냥 바로 여기서 "멍멍"을 출력했어도 됩니다
하지만 그것으로는 객체를 생성하는 개념을 설명할 수 없습니다
자 그러면 이제 클래스를 생성해 보았고
첫 생성자도 살펴보았으며 클래스에서 함수를 생성하는 법도 알아보았습니다
함수는 Dog 클래스의 멤버인 것입니다
정확히는 클래스 멤버인데 생성자 또한 클래스 멤버입니다
현재 우리의 강아지는 색깔과 같은 프로퍼티, 즉 특성이 없습니다
그것을 다음 영상에서 살펴보려고 합니다
그럼 거기서 뵙겠습니다