7.1 설계도구
- 객체지향 프로그래밍은 구현과 설계로 구분함
⊙ 패키지
- 클래스와 소스 파일을 관리하기 위한 디렉터리 구조의 저장 공간
- 디렉터리가 계층 구조로 만들어져 있으면 온점(.)으로 구분해서 각 디렉터리를 모두 나열해줌
package 메인 디렉터리.서브 디렉터리
class 클래스 {
}
⊙ 추상화
- 메서드 이름으로 나열했을 때, 명확한 코드는 설계 단계에서 메서드 블록 안에 직접 코드를 작성
- 명확하지 않은 경우는 구현 단계에서 코드를 작성하도록 메서드의 이름만 작성 => 추상화(abstract)
- Activity가 상속받는 클래스 중 최상위 클래스 : Context => abstract로 설계되어 있음
abstract class Animal {
fun walk() {
println("걷습니다.")
}
abstract fun move()
}
class Bird : Animal() {
override fun move() {
println("날아서 이동합니다.")
}
}
⊙ 인터페이스
- 실행 코드 없이 메서드 이름만 가진 추상 클래스
- 실행 코드가 한 줄이라도 있으면 추상화, 코드 없이 메서드 이름만 나열되어 있으면 인터페이스
- 인터페이스는 interface 예약어를 사용해 정의 가능, 인터페이스에 정의된 메서드를 오버라이드해서 구현 가능
- 추상 클래스와 다르게 class 키워드는 사용되지 않음
interface 인터페이스명 {
var 변수: String
fun 함수1()
fun 함수2()
}
⊙ 인터페이스 만들기
interface InterfaceKotlin {
(abstract 생략) var variable: String
fun get()
fun set()
}
⊙ 클래스에서 구현하기
class KotlinImpl : InterfaceKotlin {
override var variable: String = "init value"
override fun get() { //코드 구현 }
override fun set() { //코드 구현 }
}
var kotlinImpl = object : InterfaceKotlin {
override var variable: String = "init"
override fun get() { //코드 }
override fun set() { //코드 }
}
⊙ 접근 제한자
- private : 다른 파일에서 접근할 수 없음
- internal : 같은 모듈에 있는 파일만 접근 가능
- protected : private과 같으나 상속 관계에서 자식 클래스가 접근할 수 있음
- public : 제한 없이 모든 파일에서 접근 가능
⊙ 제네릭
- 입력되는 값의 타입을 자유롭게 사용하기 위한 설계 도구
var list: MutableList<제네릭> = mutableListOf("월","화","수")
'프로그래밍 언어 > Kotlin 기초' 카테고리의 다른 글
[Kotlin]Deligation (0) | 2023.02.24 |
---|---|
[Kotlin]tailrec(꼬리재귀) (0) | 2023.02.24 |
[Kotlin공부]코틀린문법정리 : 06 클래스 (0) | 2021.03.03 |
[Kotlin공부]코틀린문법정리 : 05 함수 (0) | 2021.03.01 |
[Kotlin공부]코틀린문법정리 : 04 반복문 (0) | 2021.02.08 |