언어/Java

추상화 추상클래스

린예라 2023. 8. 24. 18:51

추상화를 보여주는 대표적인 예 > 추상클래스

미완성 설계도> 자식클래스에게 상속해서 자식클래스에서 완성시킴.

추상 메서드를 포함 할 수 있으며, 사용하기 위해서는 추상메서드는 반드시 오버라이딩 되어야함. 

 

상속과는 반대되는 개념이라고도 할 수 있는데 스타크래프트를 예로 들어보자.

 

다음과 같이 마린, 탱크, 레이스 3개의 유닛클래스를 만들었다고 해보자

왼쪽부터 마린클래스, 탱크클래스, 레이스클래스

3개의 클래스를 보면 attack이라는 메소드가 공통적으로 사용되고 있고(모양도 똑같음), special이라는 메소드는 각자 다른 모양을 취하고 있다.(다형성) 

여기서 공통된 부분을 묶어서 추상화를 하면 다음과 같이 할 수 있다.

3개의 클래스의 공통된 부분인(같은 모양인, 혹은 중복된) attack 메소드를 하나로 묶었고, 각자 형태가 다른 special 메소드는 추상메소드로 만들었다.(이 과정을 거꾸로 하면 상속 및 오버라이딩 이라고 할 수 있다.)

 

위와 같이 공통된 부분을 추려서, 추상화가 완성된 unit이라는 클래스를 만들었다면 새로운 유닛을 만들 때 더 편하게 만들 수 있다.

벌쳐라는 유닛클래스를 새로 만든다고 하면

위와 같이 마린,탱크,레이스에게 공통적이었던 attack 메소드 관련 코드를 적지 않아도 되고, 모양이 다른 special 부분만 구현(오버라이딩)해주면 된다. 이렇게 함으로써 코드의 중복을 최소화할 수 있다.(코드의 재사용성 증가)

'언어 > Java' 카테고리의 다른 글

자바 솔리드 원칙 요약  (0) 2023.08.27
인터페이스  (0) 2023.08.25
this this()  (0) 2023.08.23
자바, 상속  (0) 2023.08.22
Getter와 Setter 캡슐화  (0) 2023.08.21