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

검색

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

Java 메서드 오버라이딩과 static 메서드

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

요약

Java 메서드 오버라이딩(Override)과 정적 메서드(static method)의 차이를 알아봅니다. Parent ref = new Child() 패턴에서 인스턴스 메서드와 static 메서드의 호출 방식을 이해하여 정보처리기사 실기 문제를 풀어봅니다.

오버라이딩 핵심 정리

개념설명예시
오버라이딩부모의 메서드를 자식이 재정의int x(int i) { return i + 3; }
동적 바인딩실제 객체 타입의 메서드가 호출됨ref.x(2) -> Child의 x() 호출
static 메서드참조 변수 타입에 따라 호출됨ref.id() -> Parent의 id() 호출
오버로딩같은 이름, 다른 매개변수의 메서드x(int i) vs x(String s)

메서드 오버라이딩이란?

오버라이딩(Overriding) 은 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 같은 이름, 같은 매개변수로 다시 정의하는 것입니다. 코드에서 @Override 표시가 보이면 오버라이딩된 메서드라는 뜻입니다.

Override는 over(위에) + ride(타다), 즉 기존 것 위에 타고 올라가 덮어쓴다는 뜻입니다. 부모의 메서드 위에 자식의 메서드를 덮어씌우는 것이므로 "오버라이딩"입니다.

오버라이딩 어원: Child 감자가 Parent 감자의 말을 빼앗아 타고 있다
Override = 덮어쓰기. 아버지(Parent)가 타던 말을 아들(Child)이 빼앗아 탔습니다.
java
코드 하이라이팅 중…

위 코드에서 Child 클래스의 x(int i) 메서드는 Parent 클래스의 x(int i) 메서드를 오버라이딩한 것입니다. 메서드 이름(x), 매개변수(int i), 반환 타입(int)이 모두 같습니다.

오버라이딩의 조건
오버라이딩하려면 메서드 이름, 매개변수 타입과 개수, 반환 타입이 부모와 동일해야 합니다. 하나라도 다르면 오버라이딩이 아닌 별개의 메서드(오버로딩)가 됩니다.

오버라이딩이 필요한 이유

상속을 사용하면 부모의 메서드를 그대로 물려받습니다. 하지만 자식 클래스에서 다른 동작이 필요할 때가 있습니다. 이때 오버라이딩을 사용합니다. 특히 추상 클래스의 추상 메서드는 자식 클래스에서 반드시 오버라이딩해야 합니다.

java
코드 하이라이팅 중…

static 메서드와 인스턴스 메서드

Parent ref = new Child() 패턴에서 인스턴스 메서드와 static 메서드의 호출 과정이 다릅니다. 이 차이가 시험에서 가장 중요한 핵심입니다.

java
코드 하이라이팅 중…

인스턴스 메서드 ref.x(2):

  1. ref가 가리키는 실제 객체를 확인 → Child 객체
  2. 그 객체에게 "x(2) 실행해줘" 요청 → Child의 x(int) 실행
  3. 2 + 3 = 5

static 메서드 ref.id():

  1. ref의 선언 타입만 확인 → Parent
  2. ref.id()를 Parent.id()로 치환 — 실제 객체가 뭔지 아예 안 봄
  3. Parent.id() 실행 → "P"

static 메서드는 객체 없이도 Parent.id()로 직접 호출할 수 있는 메서드입니다. 그래서 ref.id()도 "ref 타입이 뭐지? Parent네" → Parent.id() 이렇게 처리됩니다. 자식 클래스에서 같은 이름의 static 메서드를 정의해도, 이것은 오버라이딩이 아니라 각 클래스에 독립적으로 존재하는 별개의 메서드입니다.

Parent ref = new Child()에서 ref.x(2)는 Child의 x(int i) { return i + 3; }을 실행해 5, ref.id()는 Parent의 static id()를 실행해 P를 반환하는 그림
ref.x(2)는 실제 객체(Child)의 x를 실행해 2 + 3 = 5, ref.id()는 선언 타입(Parent)의 static id()를 실행해 P를 반환합니다.
static 메서드는 선언 타입 기준
static 메서드는 객체가 아닌 클래스에 소속됩니다. ref.id()는 ref의 선언 타입(Parent)을 보고 Parent.id()로 치환됩니다. 실제 객체가 Child인지는 아예 확인하지 않습니다.

인스턴스 메서드 vs static 메서드 비교

구분인스턴스 메서드static 메서드
키워드static 없음static 있음
소속객체에 소속클래스에 소속
오버라이딩가능불가능
호출 과정실제 객체를 확인 → 그 객체의 메서드 실행선언 타입만 확인 → 해당 클래스의 메서드로 치환
예시ref.x(2) → Child의 x()ref.id() → Parent의 id()

메서드 오버로딩

오버로딩(Overloading)은 같은 이름의 메서드를 매개변수의 타입이나 개수를 다르게 하여 여러 개 정의하는 것입니다.

java
코드 하이라이팅 중…

위 코드에서 x(int i)와 x(String s)는 이름은 같지만 매개변수 타입이 다릅니다. Java는 전달하는 인자의 타입에 따라 어떤 메서드를 호출할지 자동으로 결정합니다.

java
코드 하이라이팅 중…

오버라이딩 vs 오버로딩 비교

구분오버라이딩 (Overriding)오버로딩 (Overloading)
의미부모 메서드를 자식이 재정의같은 이름의 메서드를 여러 개 정의
메서드 이름같음같음
매개변수같음다름 (타입 또는 개수)
클래스 관계부모-자식 간같은 클래스 내에서도 가능
결정 시점런타임 (동적 바인딩)컴파일타임 (정적 바인딩)

오버라이딩은 실제 객체 타입을 기준으로 실행 시점에 어떤 구현을 호출할지 결정되고, 오버로딩은 컴파일러가 선언 타입과 인자 타입을 보고 컴파일 시점에 어떤 메서드를 호출할지 고정합니다. 두 개념이 한 코드에 섞이면 "먼저 컴파일타임에 호출 메서드 고정 → 다음 런타임에 실제 구현 선택"의 2단계 해석이 필요합니다. 자세한 2단계 해석 패턴은 메서드 오버로딩 - 컴파일타임 바인딩 페이지를 참고하세요.

시험에서 오버라이딩과 오버로딩이 함께 나옵니다
25년 2회 문제처럼, Child 클래스에 x(int i)는 오버라이딩이고 x(String s)는 오버로딩입니다. 전달하는 인자 타입에 따라 어떤 메서드가 호출되는지 구분해야 합니다. 오버로딩과 재귀 호출이 결합된 문제는 메서드 오버로딩과 재귀 호출 페이지를 참고하세요.

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

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(4개)
  • Java 메서드 오버로딩
  • Java 컴파일타임 바인딩
  • Java instanceof와 안전한 형변환
  • Java @Override 어노테이션
정처기 감자정처기 감자

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

실기 이론

  • 이론 공부법
  • 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