송민준의 개발노트

추상 클래스란 본문

JAVA

추상 클래스란

송민준 2021. 1. 28. 02:01

먼저 추상화란 뭐인가...?

사전적 의미로는 추상화란 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추린 것이라고 하는데 간단하게 말해서 공통된 것들끼리 묶어 표현한 것인데 나열된 장점으로는 코드의 재사용성, 가독성, 방향성 등등이 있는 것 같다.

 

추상 클래스란?

일단 개념적 의미로는 완전하게 구현되어 있지 않은 메소드를 가지고 있는 클래스를 의미함!

물론 메소드가 미완성이니 객체를 생성할 수도 없음. 추상적인 개념을 나타내기 위한 용도로 사용함!

 

예를 들어 탈것이라는게 있는데 이게 자동차인지 비행기인지 혹은 더 특별한 것인지 알 수가 없다. 간단하게 달린다라는 기능이 있다는 것인데 여기서 탈것은 구체적으로 어떻게 달리고 어떤 것을 주유하는지는 알 수가 없음. 이러한 탈것이 추상클래스가 되고 그 밑에 추가적으로 자동차, 비행기라는 추상클래스가 상속받고, 또 K5, K3 등 과 같은 구체적인 클래스로 정의가 되는 것으로 예를 들 수 있음.

 

간단한 사용법으로는

public abstract class Vehicle {
	...
    public abstract void run();
    ..
}

위에처럼 추상 클래스는 하나 이상의 추상 메소드를 가지고 있어야 하고 세미 콜론으로 종료되어야 함. 보통은 괄호 안에 구체적인 코드들이 있는데 추상메소드는 그렇지 않음. 그리고 이 vehicle을 상속받는 클래스들 또한 vehicle의 변수, 메서드를 상속 받음.

 

자 여기서 한가지 오해할 수 있는 것이 보통의 메소드를 가질 수 없다고 생각할 수가 있는데 보통의 메소드도 가질 수 있음. 또한 상속 받은 클래스에서는 추상 메서드를 구현해줘야함.

 

그렇다면 여기서 활용하는 방법이 있는데 목적에 따라 run 메서드를 추상메서드 혹은 일반 메서드로 구현해줄 수 있음. 상속 받은 클래스에서 반드시 구현하게 하고 싶으면 추상메서드로 구현하고 그럴 필요가 없다면 일반 메서드로 구현해주는 것이다.

 

실무에서 사용함으로써 공통된 것을 추상화해버리면 꽤나 시간 절약이 된다. 

'JAVA' 카테고리의 다른 글

제네릭이란...?  (0) 2021.01.17
기본자료형과 래퍼클래스 정리  (0) 2021.01.12
JAVA에서 SFTP 활용하기!! CSV 파일 적용(JSch 사용)  (0) 2020.11.08
String 클래스 isEmpty 메소드  (2) 2020.04.16
JavaBean  (0) 2019.11.12