본문 바로가기

Programming/Kotlin

10장. 추상 클래스와 인터페이스

10.1 추상 클래스

 10.1.1 추상 클래스 선언(abstract)

   - 추상 함수 : 실행 영역이 없는 함수, 최상위 레벨에 선언된 함수에는 사용할 수 없다. 클래스 내부에 선언된 함수만 가능

   - 추상 클래스 : 추상 함수를 포함하고 있는 클래스

   - 추상 프로퍼티 : 선언만 있고 초깃값을 대입하지 않은 프로퍼티

 

 10.1.2 추상 클래스 이용

   - 추상 클래스는 그 자체로는 객체를 생성할 수 없다. 추상 클래스를 상속받는 하위 클래스를 이용해 객체를 생성한다.

   - 추상 클래스를 상속받는 하위 클래스는 추상 함수, 추상 프로퍼티를 모두 재정의 해야하며, 그렇지 않다면 하위

     클래스도 abstract 키워드를 이용해 추상형으로 선언해야 한다.

 

10.2 인터페이스

 10.2.1 인터페이스 선언 및 구현

   - 인터페이스의 주 목적은 추상 함수를 선언하는데 있다. 만약 인터페이스의 추상 함수를 하위 클래스에서 재정의하지

     않는다면 해당 클래스는 abstract 키워드를 이용해 추상형으로 선언해야 한다.

   - 인터페이스의 추상 프로퍼티나 추상 함수는 abstract를 추가하지 않아도 된다.

   - 인터페이스로 객체를 생성할 순 없지만 인터페이스를 구현한 클래스의 객체를 생성하고 이 객체를 인터페이스

     타입으로 선언해서 이용할 수 있다. 하지만 인터페이스에 선언된 함수만 이용할 수 있다.

 

 10.2.2 인터페이스와 프로퍼티

   - 프로퍼티를 추상형으로 선언하거나 get(), set() 함수를 정의해야한다.

   - 추상 프로퍼티가 아니라면 val은 get() 함수를 꼭 선언해야 한다.

   - 추상 프로퍼티가 아니라면 var는 get(), set() 함수를 꼭 선언해야 한다.

   - 인터페이스의 프로퍼티를 위한 get(), set() 함수에서는 field를 사용할 수 없다.

 

 10.2.3 오버라이드 함수 식별

   - 같은 이름의 추상 함수가 여러 개일 때에는 클래스에서 한 번만 재정의해주면 된다.

   - 같은 이름의 추상 함수와 구현된 함수가 있을 때, 추상 함수는 구현하고, 구현된 함수는 super를 통해 이용한다.

   - 같은 이름으로 구현된 함수가 여러 개일 때 super<Interface>.fun 으로 이용할 함수를 명시해 준다.

 

 

※ 코틀린에서는 추상 함수 이외에 추상 프로퍼티도 선언할 수 있다.

코틀린의 인터페이스는 Java 8과 거의 같다

'Programming > Kotlin' 카테고리의 다른 글

안드로이드 스튜디오 recyclerView 버전 문제  (0) 2020.01.29
11장. 다양한 코틀린 클래스  (0) 2020.01.23
9장. 상속  (0) 2020.01.20
8. 프로퍼티  (0) 2020.01.17
7. 클래스  (0) 2020.01.16