유데미 X 웅진 STARTERS 취업 부트캠프 백엔드 3기 - 4주차 학습 일지_ Abstract

zwundzwzig·2022년 12월 13일
0
post-thumbnail

추상화는 객체의 속성만 표시하고 구체적인 정보는 위임하는 개념이다.
코드의 복잡성을 줄여 효율적으로 구현하게 하는 객체 지향 언어의 주된 특징이다.
기존에 공부한 상속과 연결될 수 있는 개념이자, 인터페이스라는 새로운 개념을 소개하는 통로가 될 것이다.

추상화란?

추상 抽象 - 낱낱의 구체적 표상 表象 이나 개념에서 공통된 성질을 뽑아 일반적 개념으로 파악하는 정신 작용
추상화 : 클래스 간 공통점을 찾아 공통의 조상을 만드는 작업.
추상화한 클래스를 상속을 통해 자식 클래스에서 해당 클래스를 구현 및 확장하는 작업을 구체화라고 한다.
기능의 구현이 아닌 의도를 더 잘 표현한다.

오늘 다룰 추상화는 객체지향 관점에서 클래스를 정의하는 데이터 추상화를 주로 한다.

추상 클래스

기존 자바의 클래스가 상품을 생산하는데 필요한 완성된 설계도라고 한다면, 추상 클래스는 완성되진 않았지만 해당 상품이 갖춰야할 속성들만 확보한 설계도라고 생각하자.

추상 클래스는 최소 하나의 추상 메소드를 가지고 있거나, abstract 제어자로 선언돼야 한다. 이외에는 생성자, 멤버변수, 메서드 등 일반 클래스와 전혀 차이가 없다.

추상 클래스는 다른 클래스가 해당 클래스를 상속받은 뒤 메소드의 구현부를 채우는 과정으로 사용될 수 있다.

abstract ObjectOrientedLanguage {
	abstract void polymorphism(); // 어차피 구현부가 필요 없으므로, {} 블록은 생략 가능하다.
}

abstract JavaScript {
	void inheritance() {
    	System.out.println("Extends");
    }; // 완성된 클래스에도 abstract 제어자를 붙여 추상 클래스로 사용 가능하다.
}

class Java extends ObjectOrientedLanguage {...} // 내부에서 부모의 추상메서드를 구현함

추상 클래스는 동작이 정의되어 있지 않은 추상 메소드를 포함하기 때문에 인스턴스를 생성할 수 없다.

먼저 상속을 통해 자식 클래스를 만들고, 해당 자식 클래스에서 추상 클래스의 모든 추상 메소드를 오버라이딩하고 나서야 비로소 자식 클래스의 인스턴스를 생성할 수 있다.

완성된 클래스에도 abstract 제어자를 활용해 추상화 시킬 수 있는데, 이 클래스 역시 인스턴스를 생성할 수 없다.

추상 메서드

추상 메서드는 메서드 선언부만 작성하고 구현부는 빈 채로 둔 메서드이다.

추상 클래스와 마찬가지로, 선언부 앞에 abstract 제어자로 추상 메서드임을 표시한다.

abstract class ObjectOrientedLanguage {
	abstract void polymorphism() {}
}

추상 클래스와 메서드는 상속과 다형성의 기반이 되는 개념이다.


본 후기는 유데미 X 웅진씽크빅 취업 부트캠프 3기 백엔드 과정 학습 일지 리뷰로 작성되었습니다.

유데미 바로가기 / STARTERS 취업 부트캠프 공식 블로그 보러가기


🧷 참고 교재

  • [도우출판]Java의 정석 3rd Edition, - 남궁성
profile
개발이란?

0개의 댓글