자바에서 추상화 라는 말을 종종 씁니다.
추상화, 추상 클래스, 추상 메소드 이런 개념들이 뭘까요?
쉽게 풀이하여 설명하겠습니다.
추상화란 상속과 관련이 있습니다.
예를 들면 제가 게임을 만들어요.
게임을 만드는데, 몬스터를 만듭니다.
몬스터에는 여러 종류가 있겠죠?
고블린, 오크, 트롤, 언데드, 뿔사슴 등등 여러 종류의 몬스터가 있을겁니다.
이 몬스터들의 공통점은 뭘까요?
간단하게 생각하면
HP, MP, 공격력, 방어력 등이 있죠.
이 HP, MP, 공격력, 방어력 등을 가지고 있는 class Monster
다른 클래스들은 class Goblin extends Monster
class orc extends Monster
등으로 상속을 받아서, 몬스터가 가진 속성을 사용할겁니다.
그런데, 몬스터가 그 자체로 존재할까요?
게임에는 '고블린'도 나오고, '오크'도 나오고, '트롤'도 나올겁니다.
그럼 '몬스터'라는 이름을 가진 몬스터도 나올까요?
나오지 않죠.
class Monster는 오직, 고블린 오크와 같이 실재하는 몬스터들의 공통자료형으로써 기능을 수행합니다.
그 자체로 존재할 수 없어요.
추상화: 그 자체로 존재할 수 없게 만들고 오직 공통자료형으로써만 기능을 수행하게 만드는 것
입니다.
그러면 그렇게 약속만 하지말고, 아얘 인스턴스로 생성하지 못하게 만들어버리는 것이 좋겠죠?
이때 사용하는 키워드가 abstract 입니다.
abstract class Monster{} 라고 선언하면
Monster monster = new Monster() 라고 했을때 에러가 납니다.
자 오늘은 추상화의 개념에 대해 알아봤습니다.
사실 자바의 팩토리 메소드 구현을 포스팅하려고 했는데 제가 이해를 못해서 추상화를 했네요.
다음에는 팩토리 메소드, 그리고 Dart 언어의 factory에 대해서 알아보겠습니다!
'Java' 카테고리의 다른 글
람다식이란? #2 사용법 및 예제 (0) | 2020.04.08 |
---|---|
람다식이란? #1 개념 및 특징 (0) | 2020.04.03 |