정처기 감자정처기 감자
Java객체지향

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

Java 추상 클래스(abstract class)와 추상 메서드

코딩Java
읽는데 9분 소요
처음 쓰인 날: 2026-02-17
마지막 수정일: 2026-02-17
조회수: —
선수학습(1개)
  • Java 상속(extends), super, this()와 필드 하이딩

요약

Java 추상 클래스(abstract class)와 추상 메서드(abstract method)의 개념을 알아봅니다. 추상 클래스의 일반 메서드와 추상 메서드의 차이, 그리고 자식 클래스에서의 구현 방식을 이해하여 정보처리기사 실기 문제를 풀어봅니다.

추상 클래스 핵심 정리

개념설명예시
추상 클래스직접 객체를 만들 수 없는 클래스abstract class Vehicle { }
추상 메서드선언만 있고 본문이 없는 메서드abstract String getName(String val);
일반 메서드본문이 있는 메서드 (추상 클래스 안에도 가능)String getName() { return "Vehicle"; }
구현 의무자식 클래스는 추상 메서드를 반드시 구현Car에서 getName(String val) 구현

추상 클래스란?

추상 클래스는 객체지향 언어의 개념입니다
Java는 객체지향 언어이기 때문에 클래스와 상속 개념이 있고, 추상 클래스를 지원합니다. C언어 같은 절차지향 언어에는 클래스 자체가 없으므로 추상 클래스도 존재하지 않습니다.

추상 클래스(abstract class) 는 abstract 키워드가 붙은 클래스로, 직접 객체를 생성할 수 없는 클래스입니다.

쉽게 말하면, "설계도만 제공하고, 실제 사용은 자식 클래스가 한다" 는 뜻입니다.

java
코드 하이라이팅 중…

추상 클래스는 반드시 자식 클래스가 상속(extends)해서 사용해야 합니다.

Java 추상 클래스와 자식 클래스의 관계
추상 클래스 Vehicle의 추상 메서드는 자식 클래스 Car에서 반드시 구현해야 하지만, 일반 메서드는 그대로 사용할 수 있습니다.
java
코드 하이라이팅 중…
추상 클래스는 왜 직접 객체를 못 만들까?
추상 클래스에는 '구현되지 않은 메서드(추상 메서드)'가 있을 수 있기 때문입니다. 미완성 설계도로는 제품을 만들 수 없는 것과 같습니다. 자식 클래스에서 미완성 부분을 완성해야 객체를 만들 수 있습니다.

추상 메서드

추상 메서드(abstract method) 는 선언만 있고 본문(중괄호 안의 코드)이 없는 메서드입니다. abstract 키워드가 붙고, 세미콜론(;)으로 끝납니다.

java
코드 하이라이팅 중…

자식 클래스는 이 추상 메서드를 반드시 구현(오버라이딩) 해야 합니다.

java
코드 하이라이팅 중…
구분추상 메서드일반 메서드
키워드abstract 있음abstract 없음
본문없음 (세미콜론으로 끝남)있음 (중괄호 { } 안에 코드)
자식 클래스반드시 구현구현하지 않아도 됨 (그대로 사용 가능)

추상 클래스 안의 일반 메서드

추상 클래스는 추상 메서드만 가질 수 있는 것이 아닙니다. 일반 메서드(본문이 있는 메서드)도 함께 가질 수 있습니다.

java
코드 하이라이팅 중…

위 코드에서 Vehicle 클래스에는 세 개의 메서드가 있습니다.

메서드종류본문자식 클래스에서
getName(String val)추상 메서드없음반드시 구현해야 함
getName()일반 메서드있음구현하지 않으면 부모 것 사용
setName(String val)일반 메서드있음구현하지 않으면 부모 것 사용
시험 핵심: 추상 메서드와 일반 메서드를 구분하세요
abstract 키워드가 붙은 메서드만 추상 메서드입니다. 추상 클래스 안에 있더라도 abstract가 없으면 일반 메서드이며, 자식 클래스에서 오버라이딩하지 않으면 부모의 것이 그대로 실행됩니다.

일반 메서드가 추상 메서드를 부르면

추상 클래스의 일반 메서드 안에서 추상 메서드를 호출할 수도 있습니다. 이때 실행되는 것은 부모의 추상 메서드(본문이 없음)가 아니라, 실제 객체(자식)에서 구현한 메서드입니다. 메서드는 실제 객체 타입 기준으로 호출되기 때문입니다.

java
코드 하이라이팅 중…

Vehicle v = new Car("스파크");로 만든 뒤 v.describe()를 부르면, describe()는 부모(Vehicle)의 일반 메서드지만 그 안에서 부르는 sound()는 실제 객체인 Car가 구현한 메서드가 실행됩니다.

  • describe() 본문: name + " 소리: " + sound() → "스파크" + " 소리: " + "부릉부릉" → 스파크 소리: 부릉부릉

같은 describe()인데 실제 객체만 Bike로 바꾸면(Vehicle v = new Bike("자전거");) 결과는 자전거 소리: 따르릉이 됩니다. 부모의 일반 메서드는 그대로인데 실제 객체에 따라 결과가 달라지는 것이 다형성입니다.

이렇게 전체 흐름(일반 메서드)은 부모가 정하고, 달라지는 부분(추상 메서드)만 자식이 채우는 구조를 템플릿 메서드(Template Method) 패턴이라고 합니다.

일반 메서드가 부른 추상 메서드도 자식 구현이 실행됩니다
부모의 일반 메서드 안에서 추상 메서드를 호출해도, 실제 객체가 자식이면 자식이 오버라이딩한 메서드가 실행됩니다. 부모 타입 변수로 호출해도 결과는 같습니다.

추상 클래스 vs 인터페이스

추상 클래스와 인터페이스는 비슷하지만 차이가 있습니다.

구분추상 클래스인터페이스
키워드abstract classinterface
상속/구현extendsimplements
일반 메서드가질 수 있음기본적으로 불가 (추상 메서드만)1
필드 (변수)가질 수 있음상수만 가능
다중 상속불가능 (하나만 상속)가능 (여러 개 구현)
java
코드 하이라이팅 중…
핵심 차이: 일반 메서드의 유무
추상 클래스는 일반 메서드(본문이 있는 메서드)를 가질 수 있지만, 인터페이스는 기본적으로 추상 메서드만 가질 수 있습니다. 이 차이가 시험에서 중요합니다.

메서드 오버로딩과 혼동 주의

문제에서 같은 이름이지만 매개변수가 다른 메서드가 여러 개 있을 수 있습니다. 이것은 메서드 오버로딩입니다.

java
코드 하이라이팅 중…

이 경우 getName()이라는 이름의 메서드가 여러 개 있지만, 매개변수 타입이 다르므로 서로 다른 메서드입니다.

메서드매개변수정의된 클래스호출 조건
getName()없음Vehicle (부모)매개변수 없이 호출할 때
getName(String val)StringCar (자식)String을 전달할 때
getName(byte val[])byte[]Car (자식)byte 배열을 전달할 때
매개변수가 없는 getName()은 Car에 없습니다
Car 클래스에는 getName(String)과 getName(byte[])만 있습니다. 매개변수 없는 getName()은 Car에서 오버라이딩하지 않았으므로, 부모 클래스 Vehicle의 getName()이 그대로 실행됩니다. 이것이 이 문제의 핵심입니다.

문제 풀이 전략

풀이 순서

  1. 추상 메서드 찾기: abstract 키워드가 붙은 메서드 확인
  2. 일반 메서드 찾기: 본문이 있는 메서드 확인
  3. 자식 클래스 확인: 어떤 메서드를 구현(오버라이딩)했는지 확인
  4. 호출 분석: 매개변수 타입과 개수를 보고 어떤 메서드가 호출되는지 판단

자주 하는 실수

실수올바른 이해
getName()과 getName(String)을 같은 메서드로 봄매개변수가 다르면 다른 메서드 (오버로딩)
추상 클래스의 일반 메서드도 반드시 오버라이딩해야 한다고 생각일반 메서드는 오버라이딩하지 않으면 부모 것 사용
Vehicle obj면 Vehicle 메서드만 호출된다고 생각오버라이딩된 메서드는 실제 객체(Car) 기준으로 호출

추상 클래스를 활용한 디자인 패턴

추상 클래스는 디자인 패턴에서도 자주 활용됩니다. 대표적으로 추상 팩토리(Abstract Factory) 패턴이 있습니다. 추상 팩토리 패턴은 추상 클래스가 API(인터페이스 역할)를 제공하고, 구체 클래스가 실제 객체 생성을 담당하는 구조입니다.

추상 클래스는 Java 언어 문법이고, 추상 팩토리는 추상 클래스를 활용한 설계 패턴입니다. 시험에서는 별개 주제로 출제됩니다.


정보처리기사 실기 기출 문제

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.

Footnotes

  1. Java 8부터 인터페이스에도 default 키워드를 붙인 일반 메서드를 선언할 수 있습니다. 하지만 정보처리기사 시험에서는 "인터페이스 = 추상 메서드만"으로 이해하면 문제 풀기에 충분합니다. ↩


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(1개)
  • Java 인터페이스와 implements
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999