안녕하세요.
오늘은 객체지향 프로그래밍 즉 자바에서 중요한 개념 중 하나인 '추상화(Abstraction)'에 대해 알아보겠습니다.
추상화의 정의
컴퓨터 과학에서 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.
위와 같이 추상화는 사물들의 구체적인 공통점은 수용하고, 차이점은 버리는 일반화를 사용하거나,
중요한 부분을 강조하기 위해 불필요한 사항을 제거함으로써 단순하게 만드는 것을 말합니다.
위의 과정을 통해 클래스들의 공통적인 요소를 선별하여 상위 클래스를 만드는 것이 자바에서의 추상화 입니다.
꼭 추상화가 상위 클래스를 만드는 과정은 어니며, 공통적인 속성과 기능을 정의한 하위 클래스를 생성할 수도 있습니다.
정리하자면, 추상화는 공통적인 속성과 기능을 정의함으로 인해 코드의 중복을 줄이고,
클래스 간의 관계를 효과적으로 설정하고, 유지보수를 용이하게 하는 것 입니다.
자바에서의 추상화
자바에서는 추상 클래스(Abstract Class)와 인터페이스(Interface)를 이용하여 추상화를 구현합니다.
이 둘은 비슷한 기능을 수행하지만, 차이점도 존재합니다.
추상 클래스(Abstract Class)
- 추상 클래스는 하나 이상의 추상 메서드(Abstract Method)를 포함하는 클래스를 말한다.
- 추상 클래스는 일반 메서드와 멤버 변수를 가질 수 있고, 필요에 따라 메서드의 구현도 가질 수 있다.
- 추상 클래스는 객체의 기본 동작을 정의하는 데에 사용한다. 이는 곧, 공통된 특징과 동작을 상속받은 클래스들이 구현해야 하는 메서드를 추상화하여 제공한다는 의미이다.
- 추상 클래스는 상속을 통해 확장되고, 자식 클래스에서 추상 메서드를 오버라이딩하여 구체적인 동작을 정의한다.
- 다른 클래스들 간의 상속 관계에서 추상 클래스는 단일 상속만을 지원한다.
인터페이스(Interface)
- 인터페이스는 메서드와 상수만을 포함하는 추상 형식이다.
- 인터페이스는 클래스에게 구현을 강제하며, 클래스들 간의 다중 상속을 지원한다.
- 클래스는 인터페이스를 구현하여 인터페이스가 정의한 모든 메서드를 구현해야하며, 하나의 클래스가 여러개의 인터페이스를 구현할 수 있다.
- 인터페이스는 특정 동작이나 기능을 보장하는 계약의 역할을 한다. 때문에 여러 클래스에서 공통으로 사용하는 메서드 시그니처를 정의하는 데 사용된다.
정리해보자면,
추상 클래스는 공통된 동작을 가진 클래스들의 기본 동작을 정의하는 데 사용이 되고,
인터페이스는 클래스 간의 일관성을 유지하면서 다중 상속을 지원하기 위한 계약의 역할을 합니다.
위 내용을 인지하고 추상 클래스와 인터페이스는 각각의 특징과 용도에 맞게 사용이 됩니다.
이상으로 자바에서의 추상화에 대해 간단하게 알아보았습니다.
다음 시간에는 추상 클래스와 인터페이스를 직접 비교해보고
어떤 차이가 있는지에 대해 알아보겠습니다.
'Java' 카테고리의 다른 글
[ JAVA ] 12. 오버라이딩(Overriding)과 오버로딩(Overloading) (0) | 2023.07.17 |
---|---|
[ JAVA ] 11. 추상 클래스(Abstract Class)와 인터페이스(Interface)에 대해 알아보자. (0) | 2023.07.15 |
[ JAVA ] 09. 객체(Object)와 인스턴스(Instance)는 같은 개념인가? (0) | 2023.07.09 |
[ JAVA ] 08. 객체(Object)란 무엇인가? (0) | 2023.07.08 |
[ JAVA ] 07. 자료형을 사용할 때 고려해야 할 부분은 무엇이 있을까? (0) | 2023.07.07 |