추상 클래스(abstract class)
- 클래스 : 구체적으로 데이터를 담아 인스턴스화하여 직접 다루는 클래스
- 구체적이지 않은 추상적인 데이터를 담고 있는 클래스
- 하위 클래스들의 공통점을 모아 추상화하여 만든 클래스
- 자바에서는 extends 키워드를 사용해서 자신의 기능을 하위 클래스로 확장시키는 느낌을 준다.
- 클래스 간의 연관 관계를 구축하는 것에 초점을 둔다.
- 하나 이상의 추상 메소드를 포함할 수 있는 클래스로, 일반 클래스와 같이 필드, 메서드, 생성자를 가질 수 있다.
- 이러한 특징으로, 추상 클래스는 추상화(추상 메서드)를 하면서 중복되는 클래스 멤버들을 통합 및 확장할 수 있다.
- 인스턴스를 생성할 수 없으며, 구현부를 만들어주는 클래스에 구현(상속) 되어야 한다.
- 단일 상속만 허용한다.
- public 이외의 접근 제어자를 사용할 수 있다.
인터페이스(interface)
- 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면 (feat. 위키백과)
- 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 상호작용 시스템을 의미한다.
- 객체의 인스턴스 메서드를 이용하는 사용자 입장에서 그 객체의 내부 구현이 어떻든 깊이 학습할 필요 없이 원하는 메서드만 호출하고 결과 값을 제대로 받게 해주는 간편한 상호작용 기능
- 자바에서는 implements 키워드를 사용해서 인터페이스에 정의된 메서드를 각 클래스의 목적에 맞게 기능을 구현하는 느낌을 준다.
- 클래스와 별도로 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용하는 것에 초점을 둔다.
- 구현 코드 없이 선언만 있는 메소드의 집합
- 인스턴스를 생성할 수 없으며, 구현부를 만들어주는 클래스에 구현(상속) 되어야 한다.
- 다중 구현을 지원하여 여러 인터페이스를 동시에 구현할 수 있다.
- 인터페이스도 필드를 선언할 수 있지만 변수가 아닌 상수로서만 정의할 수 있다.
- 자식 클래스에 클래스 상속과 인터페이스 구현은 동시에 가능하다.
- public, private 제어자를 붙여 클래스와 같이 구체적인 메서드를 가질 수 있다.
'안드로이드 > Kotlin' 카테고리의 다른 글
[Kotlin] 객체 지향 프로그래밍(Object-Oriented Programming) (0) | 2024.12.08 |
---|---|
[Kotlin] 함수형 프로그래밍(Functional Programming), 람다(lambda) (0) | 2024.12.06 |
[Kotlin] 데이터 클래스(Data Class) (0) | 2024.12.06 |