Kotlin의 메소드 구조:
fun 메소드이름(변수형:자료형, 변수형:자료형 ....) : 반환자료형 {
소스코드 로직
}
객체지향 프로그래밍
** 시간날때 한번씩 읽어보자 **
Kotlin의 클래스 구조:
class 클래스이름 {
정보 1
정보 2
행위 1
행위 2
}
특별한 클래스들
1. data class: 정보만 가지고 있는 클래스
data class 클래스이름 {
정보 1
정보 2
}
유용한 메소드를 자동으로 생성해준다
1) hashCode(): 객체를 구분하기 위한 고유값 리턴
2) equals(): 동일한 객체인지 비교해서 true / false 리턴
3) copy(): 현재 객체를 복사해서 새로운 객체 리턴
4) toString(): 현재 객체의 모든 정보를 출력
5) getXXX() / setXXX(): 변수의 값을 리턴하거나 설정
2. sealed class: 상속받을 수 있는 자식클래스들을 미리 정의한 클래스(무분별한 상속 방지)
sealed class 부모클래스 {
class 자식클래스1: 부모클래스생성자
class 자식클래스2: 부모클래스생성자
}
3. object class: 프로그램 실행과 동시에 인스턴스화
4. enum class: 상수값에 대한 관리 지점
enum class 클래스1 {
C, JAVA, KOTLIN
}
enum class 클래스2(val code: Int) {
C(10),
JAVA(20),
KOTLIN(30)
}
fun main() {
println(클래스1.C.toString()) // 출력: C
println(클래스2.KOTLIN.code) // 출력: 30
println(클래스2.KOTLIN.name) // 출력: KOTLIN
}
Kotlin의 생성자 Init(주 생성자)와 Constructor(부 생성자)의 쓰임새 차이:
한 가지 형태로 클래스 실체화 -> 주 생성자
여러 형태로 클래스 실체화 -> 부 생성자
객체(Object): 모든 인스턴스를 포함하는 개념
인스턴스: 클래스형태로 설계된 객체를 실체화한것
open: 클래스 상속
Overriding: 상속받은 부모 클래스의 정보나 행위를 재설계
오버로딩: 동일한 이름의 메소드를 여러 형태로 만들 수 있다
1) 매개변수의 갯수를 다르게하면 동일한 이름으로 메소드를 만들 수 있다
2) 매개변수의 자료형을 다르게하면 동일한 이름으로 메소드를 만들 수 있다
3) 반환자료형(반환형)은 오버로딩에 영향을 주지 않는다
인터페이스: 공통적으로 필요한 기능을 외부에서 추가
Kotlin의 인터페이스 구조(추상 메소드):
interface 인터페이스이름 {
fun 메소드이름()
}