Kotlin/ 인터페이스

yellow·2021년 4월 15일
0

Kotlin

목록 보기
12/13

인터페이스

  • 어떤 Object에 대한 명세
  • 간단히 인터페이스는 약속이라고 생각하자!
  • 인터페이스는 생성자가 없다.
  • 인터페이스를 구현(implement)하는 클래스는 인터페이스 안에 있는 기능을 반드시 모두 구현해야한다.

상속과 다른 점

  • 상속은 조상을 찾아가는 느낌
  • 인터페이스는 종의 특징

예시1

  • Person에는 eat과 sleep기능이 있다.
  • Student와 Teacher는 Person을 구현한다.
  • 그런데 Student와 Teacher의 eat기능과 sleep기능에 있어서 큰 차이가 있는 경우
interface Person{
    fun eat()
    fun sleep()
}

class Student : Person{
    override fun eat() {
	println("학생식당에서 먹는다.")
    }

    override fun sleep() {
	println("부모님과 함께 잔다.")
    }
}

class Teacher : Person{
    override fun eat() {
       println("교사식당에서 먹는다.")
    }

    override fun sleep() {
   	println("혼자 잔다.")
    }

예시2

  • 예시1처럼 Person에는 eat과 sleep이 있고, Student와 Teacher는 Person을 구현한다.
  • 그런데 협업 때문에 interface를 사용해야하지만, Student와 Teacher의 eat,sleep 기능이 별반 다르지 않은 경우
    -> 인터페이스에서 기능을 구현해줄 수 있다.
  • 인터페이스에 구현이 있는 함수는 그 인터페이스를 구현하는 클래스에서 해당 함수를 구현해줄 필요가 없다.
interface Person{
    fun eat(){
        println("먹는다.")
    }
    fun sleep(){
        println("잔다.")
    }
}

class Student : Person{

}

class Teacher : Person{

}

abstract 키워드

  • 인터페이스 안에있는 함수를 그 인터페이스를 구현하는 클래스에서 무조건 구현을 해줘야한다고 명시해주는 키워드
  • 예시
interface Person{
    fun eat(){
        println("먹는다.")
    }
    fun sleep(){
        println("잔다.")
    }
    
    abstract fun study()
}

class Student : Person{
	override fun study(){
    
    	}
}

class Teacher : Person{
	override fun study(){
    
    	}
}
profile
할 수 있어! :)

0개의 댓글