4. 코틀린 객체지향 프로그래밍
4.1 클래스와 생성자
- 클래스 선언만 하는 것도 가능
|
|
- 클래스 생성에 new 키워드 사용하지 않음
- 주 생성자
- 클래스 선언부에 선언
- constructor 생략 가능
- init 키워드를 통해 로직 수행 가능
- 유일하게 매개변수에 val, var 키워드를 사용할 수 있음 ~= 그러면 자동적으로 멤버변수가됨
- 객체 생성의 메인 로직을 담당하는 편
- 보조 생성자
- 본문에 constructor로 선언
- 주 생성자가 있다면 무조건 호출해 주어야 함
1 2 3 4
class User(name: String) { constructor(name: String, count: Int): this(name) { } }
4.2 클래스를 재사용하는 상속
상속과 생성자
- 상위 클래스의 생성자를 어떻게든 호출해야한다.
|
|
오버라이딩
|
|
접급 제한자
- 같은 모듈 = Gradle이나 Maven에서 프로젝트 단위 또는 같은 세트 단위
4.3 코틀린 클래스의 종류
데이터 클래스
- VO(Value Object) 클래스를 편리하게 이용할 수 있게 해줌
- var, val 키워드를 사용해 멤버변수로 만들어야 의미가 있음
|
|
- 일반 클래스는 equals() 함수 사용시 객체 자체를 비교하지만 데이터 클래스는 객체의 데이터를 비교함
- 멤버 변수나 함수를 선언할수도 있으나 equals() 함수는 주 생성자에 선언한 멤버 변수의 데이터만 비교함
- toString() 함수는 데이터의 객체를 출력함
오브젝트 클래스 = 익명 클래스
- 타입을 지정하지 않으면 Any 타입이 되어 오류남
|
|
- 아래와 같이 클래스 또는 인터페이스를 타입으로 지정해야 함
|
|
컴패니언 클래스
- static 대체
|
|