시작하기에 앞서 먼저 Class 파일 하나와 Main 함수가 실행될 File 하나로 두 개의 파일로 생성자와 getter & setter를 학습해보려고 한다.


먼저 첫 그림의 코드에 대해서 간단히 설명해 보면, 우리는 constructor()을 통해 임의로 생성자를 만들 수 있다. () 안에는 매개변수를 넣어서 데이터를 넘겨줄 수 있다.
그리고 클래스에서는 init이라는 메소드를 만들 수 있는데, init은 주 생성자로부터 받은 매개변수를 초기화 할 때 사용한다.
두 번째 그림의 코드를 보면 main 함수 안에 Person("PGT", 24)로 클래스 인스턴스를 생성하였는데, 이 코드는 첫 번째 그림을 보면 class Person constructor(name : String, age : Int)의 코드를 볼 수 있는데, name == PGT, age == 24의 데이터 값이라고 해석할 수 있다.
따라쓰고 있는 분들은 생성자( constructor ) 를 별도로 구현하지 않아도 오류 없이 잘 나타나는 모습을 볼 수 있을텐데, 그 이유는 생성자를 별도로 구현하지 않아도 코틀린 실행 단계에서 기본 생성자를 만들어 별다른 에러 없이 실행 가능한 것이다.
반대로, 우리는 constructor()를 활용하여 임의로 생성자를 만들어 준 것이다.


주 생성자가 있다면 보조 생성자도 반드시 있을 것이다. 위 그림 2가지는 보조 생성자에 대한 예시를 나타낸다.
보조 생성자 - 클래스의 괄호 안에 constructor()를 다시 사용하여 생성하는 것이 보조 생성자이다.
주의할 점은 주 생성자와 보조 생성자의 매개변수 개수나 주 생성자와 보조 생성자가 같으면 오류라는 점이다.
첫 번째 그림부터 코드를 조금 설명해보면 constructor()은 보조 생성자를 생성한 것이고, 매개변수가 같으면 안되니까 height(키)를 추가하였다.
그 옆에 있는 : this에 대해 궁금한 분들이 많을 텐데 : this는 상속을 의미한다. 즉, 주 생성자로부터의 상속을 의미한다.
클래스의 상속이 아니라는 것에 주의하자.
그러므로, 주 생성자에서 사용했던 name과 age가 포함되어야 사용이 가능하다. 물론 매개변수의 변수명은 달라질 수 있다. 그래서 _name, _age 와 같이 변수명을 설정해보았다.
두 번째 그림은 쉽게 이해할 수 있을것이라 생각한다.
다음으로는 getter & setter에 대해서 알아보자.


getter : 조회, setter : 수정으로 이해하면 좀 더 쉽게 알아둘 수 있을 것이다.
첫 번째 그림의 코드를 보면 먼저 var name : String = name으로 name의 값을 저장해준다.
getter을 사용하는 방법은 get()이다.
getter은 return 값을 가지며, field는 바로 위에 있는 변수명을 의미한다.
setter을 사용하는 방법은 set()이다.
set의 매개변수에 받을 변수를 넣어주고, value는 외부로 부터 받아오는 value를 의미한다.
그리고, 두 번째 그림을 보면 person.name을 사용하여 데이터를 수정( setter ) 한 모습을 볼 수 있을 것이다.
person.age도 수정( setter )로 마찬가지이다.
마지막으로, println를 활용해 person.name과 person.age를 통해 설정 된 값을 조회( getter ) 한 모습을 볼 수 있었다.