추상화

jisoo·2022년 7월 13일
0

추상화

목록 보기
1/2

추상화란 ?🤔

기존 클래스들의 공통적인 요소들을 뽑아서 상위 클래스를 만들어 내는 것

  • 상속은 하위클래스를 정의하는데 상위 클래스를 사용하는 것.
  • 공통적인 속성과 기능을 모아서 정의해주면 코드의 중복을 줄일 수 있고, 보다 효과적으로 클래스 간의 관계를 설정할 수 있으며, 유지/보수가 용이해진다.
  • 주로 추상 클래스인터페이스 라는 문법 요소를 사용해서 추상화를 구현한다.



abstract 제어자

메서드 앞에 붙은 경우 '추상 메서드 (abstract method)',
클래스 앞에 붙은 경우를 '추상 클래스(abstract method)'라 부른다.

  • 어떤 클래스에 추상 메서드가 포함되어 있는 경우 해당 클래스는 자동으로 추상 클래스가 된다.
abstract class AbstractExample {
	abstract void start(); // 메서드 바디가 없는 추상 메서드
}
  • abstract 키워드는 '추상적인', '미완성' 을 의미한다.



추상 클래스

메서드 시그니처만 존재하고 바디가 선언되어있지 않은 추상 메서드를 포함하는 미완성 설계도이다 .

  • 미완성된 구조를 가지고 있어 이를 기반으로 객체를 생성하는 것이 불가능

  • 추상 클래스는 상속 관계에 있어 새로운 클래스를 작성하는데 매우 유용하다.

    • 메서드의 내용이 상속을 받는 클래스에 따라서 종종 달라지기 때문에 상위 클래스에서는 선언부만을 작성하고, 실제 구체적인 내용은 상속을 받는 하위 클래스에서 구현하도록 비워둔다면 설계하는 상황이 변하더라도 보다 유연하게 대응할 수 있다.
      • 이 때 우리가 사용하게 되는 것이 '오버라이딩' 이다.
      • 오버라이딩을 통해 각각 상황에 맞는 메서드 구현이 가능하다.
  • 추상화는 상속 계층도의 상층부에 위치할 수록 추상화의 정도가 높고 그 아래로 내려갈수록 구체화 된다.

    • 상층부에 가까울수록 더 공통적인 속성과 기능들의 정의
profile
Backend Developer 👩🏻‍💻

0개의 댓글