본문 바로가기

프로그래밍 언어/코틀린_쌩초보를 위한 기초

쌩초보를 위한 기초_28_Abstract Class & Interface

Abstract Class (추상 클래스) 와 Interface (인터페이스)

 

개요

 

ab,abs는 '밖으로'라는 뜻이고 tract는 '끌다'라는 뜻이다.

그래서 abstract는 '(생각을) 밖으로 끄집어 내어 (개략적으로 표현하다)'라는 뜻이다.

즉, '추상적인, 관념적인'이라는 뜻이다.

 

그래서 코딩에서 abstract(추상)이라는 말은 완성품이 아니라 모형틀과 같다. 그래서 추상 클래스나 추상 함수는 선언 부분만 있고 실행 부분은 없다.

 

추상클래스는 클래스를 처음부터 완성하지 않고 일단 공통적인 기능과 개략적인 틀만 만든 후 구체적인 내용은 상속받는 하위 클래스에서 구현한다.

추상 클래스를 만들려면 class 앞에 키워드 abstract를 붙인다.

추상 클래스에 포함된 property(속성)나 method(함수)도 abstract를 붙여 추상화 할 수 있다.

 

인터페이스도 개략적인 틀만 만든 후 구체적인 내용은 하위 클래스에서 구현한다는 점이 추상 클래스와 비슷하다.

차이점은 추상클래스와 다르게 상태를 저장할 수 없다.

인터페이스는 클래스가 아니므로 상속으로 property, method를 전하지 않는다.

그래서 추상클래스로 만들었을 때의 부족한 부분을 보완하는 용도로 활용할 수 있다. 

인터페이스는 키워드 interface를 사용한다.

인터페이스를 만들면 포함되는 property, method는 자동으로 추상화된다.

 

추상 클래스

 

추상 클래스는 아래와 같이 만들 수 있다.

 

 

상속으로 만들어진 추상클래스에서 추상함수가 아닌 bake()함수를 override해서 추상함수로 다시 정의할 수도 있다.

 

인터페이스

 

인터페이스는 아래와 같이 만들 수 있다.

 

위 그림은 인터페이스 Cookie를 만들고 클래스에서 상속받아 구현한 모습이다.

클래스는 1개의 클래스만 상속받을 수 있는 반면 클래스와 객체는 여러 개의 인터페이스로 부터 상속받아 override로 구현할 수 있다.

 

여기까지 추상클래스와 인터페이스의 기본 개념만 이해하고 실제 적용은 앱을 만들 때 자세히 알아보기로 한다.

 

끝.