JAVA101

준비중..

JAVA101

자바 프로그래밍 입문

17 추상 클래스

# 추상 클래스 ## 들어가며 --- 이전 시간 우리는 인터페이스에 대한 내용을 배웠습니다. ![클라우드스터딩-자바-인터페이스-예](https://i.imgur.com/XB9GsHC.png) 이번 시간에는 추상 클래스에 대해 알아보도록 하겠습니다. ## 목차 --- 1. 추상 클래스란 2. 언제 사용해야 할까 3. 추상 클래스의 장점 ## 1. 추상 클래스란 --- #### 무엇? 추상 클래스란, 직접 객체 생성이 불가능한 클래스입니다. (자식 클래스를 통해 간접적으로만 존재하는, 개념적 클래스) #### 특징? 예를 들어, Animal 클래스가 추상클래스라면 아래의 코드는 동작하지 않습니다. 자바는 추상 클래스의 직접적 객체 생성을 차단하기 때문이죠. ``` Animal animal = new Animal(); // ERROR ``` #### 형식? 이러한 추상클래스는 `abstract` 키워드를 통해 선언됩니다. ``` abstract class Animal { // 내부 구현 생략.. } ``` ## 2. 언제 사용하나 --- #### 사용법? 추상 클래스는, 개념적으로는 의미가 있으나, 실존하지 않는 경우에 사용합니다. #### 코드 예? 동물의 왕국을 예로 들어보죠. 호랑이, 토끼, 사자, 기린 클래스가 아래와 같이 있습니다. ``` class Tiger { private String name; public void eat() { System.out.println("냠냠"); } } class Rabbit { private String name; public void eat() { System.out.println("냠냠"); } } class Lion { private String name; public void eat() { System.out.println("냠냠"); } } class Giraffe { private String name; public void eat() { System.out.println("냠냠"); } } ``` 위 코드에는 중복되는 내용들이 많은데요. 이를 상속을 통해 최소화할 수 있겠습니다. ![클라우드스터딩-자바-추상-클래스](https://i.imgur.com/hjIVp2i.gif) 자 여기서 질문! 호랑이, 토끼, 사자, 기린과 같은 동물은 실제로 존재합니다. 그렇다면 동물이라는 동물은 실제로 있나요? 말이 조금 이상하긴 한데요. 아무튼, 정답은 "아니요"가 되겠습니다. 왜일까요? 동물이란 말은, 사람들이 만들어낸 추상적 개념이기 때문이죠. 이렇게 개념적 클래스의 경우, 추상 클래스로 선언합니다. ## 3. 추상 클래스의 장점 --- 이러한 추상 클래스는, 상속의 장점인 중복 코드 제거 및 그룹화 기능을 제공합니다. 그뿐 아니라, 비 실존 객체의 직접 생성을 차단합니다. - 중복 코드 제거 - 그룹화 - 비 실존 객체의 직접 생성 차단 ## 요약 --- #### 추상 클래스란 - 개념적 클래스이다 - 직접적 객체 생성이 불가능하다 - abstract 키워드로 선언한다 #### 추상 클래스의 장점 - 상속을 통해 중복 코드를 줄일 수 있다 - 자식 클래스를 그룹화할 수 있다 - 비 실존 객체의 직접 생성 차단하여 실수를 사전에 방지한다 ## 확인하기 --- <div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5d2fea2ae783d40014f3cf66" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5d2fea2ae783d40014f3cf66/q/1?method=iframe"></iframe></div></div>

Challenge

개념 실습! 학습 내용을 진짜 내 것으로 만들기!