본문 바로가기
안드로이드/Kotlin

[Kotlin] 추상 클래스(abstract class), 인터페이스(interface)

by jinwo_o 2024. 12. 8.

추상 클래스(abstract class)

  • 클래스 : 구체적으로 데이터를 담아 인스턴스화하여 직접 다루는 클래스
  • 구체적이지 않은 추상적인 데이터를 담고 있는 클래스
  • 하위 클래스들의 공통점을 모아 추상화하여 만든 클래스
  • 자바에서는 extends 키워드를 사용해서 자신의 기능을 하위 클래스로 확장시키는 느낌을 준다.
  • 클래스 간의 연관 관계를 구축하는 것에 초점을 둔다.

 

  • 하나 이상의 추상 메소드를 포함할 수 있는 클래스로, 일반 클래스와 같이 필드, 메서드, 생성자를 가질 수 있다.
    • 이러한 특징으로, 추상 클래스는 추상화(추상 메서드)를 하면서 중복되는 클래스 멤버들을 통합 및 확장할 수 있다.
  • 인스턴스를 생성할 수 없으며, 구현부를 만들어주는 클래스에 구현(상속) 되어야 한다.
  • 단일 상속만 허용한다.
  • public 이외의 접근 제어자를 사용할 수  있다.

 

인터페이스(interface)

  • 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면 (feat. 위키백과)
    • 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 상호작용 시스템을 의미한다.
  • 객체의 인스턴스 메서드를 이용하는 사용자 입장에서 그 객체의 내부 구현이 어떻든 깊이 학습할 필요 없이 원하는 메서드만 호출하고 결과 값을 제대로 받게 해주는 간편한 상호작용 기능
  • 자바에서는 implements 키워드를 사용해서 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 기능을 구현하는 느낌을 준다.
  • 클래스와 별도로 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용하는 것에 초점을 둔다.

 

  • 구현 코드 없이 선언만 있는 메소드의 집합
  • 인스턴스를 생성할 수 없으며, 구현부를 만들어주는 클래스에 구현(상속) 되어야 한다.
  • 다중 구현을 지원하여 여러 인터페이스를 동시에 구현할 수 있다.
  • 인터페이스도 필드를 선언할 수 있지만 변수가 아닌 상수로서만 정의할 수 있다.
  • 자식 클래스에 클래스 상속과 인터페이스 구현은 동시에 가능하다.
  • public, private 제어자를 붙여 클래스와 같이 구체적인 메서드를 가질 수 있다.

 

☕ 인터페이스(Interface) 문법 & 활용 - 완벽 가이드

인터페이스 정의 (친숙하게 설명) 객체 지향 프로그래밍의 추상화를 배우고 추상 클래스를 접해봤다면 그 다음 접해보는 것이 인터페이스(Interface) 일 것이다. 인터페이스는 간단히 말하자면 프

inpa.tistory.com

 

☕ 추상 클래스(Abstract) 용도 완벽 이해하기

추상 클래스 와 추상화 우리가 지금 까지 사용해왔던 일반적인 클래스는 구체적(concrete)으로 데이터를 담아 인스턴스화 하여 직접 다루는 클래스이다. 그 반대로 추상 클래스는 구체적이지 않은

inpa.tistory.com