[Kotlin공부]코틀린문법정리 : 07 설계도구

2021. 3. 4. 12:35프로그래밍 언어/Kotlin 기초

728x90
반응형

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("월","화","수")

 

728x90
반응형