반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- javascript
- string
- 인텔리제이
- Array
- js
- CSS
- Eclipse
- 자바스크립트
- Java
- json
- 자바문법
- date
- list
- Visual Studio Code
- 이클립스
- 정규식
- HashMap
- IntelliJ
- 자바
- 배열
- vscode
- 이탈리아
- 문자열
- replace
- ArrayList
- map
- math
- table
- html
- input
Archives
- Today
- Total
어제 오늘 내일
[Java] 상속(Inheritance)과 오버라이딩(Overriding) 본문
Java의 객체지향 프로그래밍(OOP) 핵심 개념 중 두 가지가 상속(Inheritance)과 오버라이딩(Overriding)입니다. 두 개념은 서로 밀접하게 연결되어 있으며, 클래스 설계와 확장성을 높이는 데 중요한 역할을 합니다. 이 글에서는 두 개념을 명확하게 구분하고 이해할 수 있도록 정리합니다.
1. 상속(Inheritance)이란?
상속은 부모클래스의 속성과 메서드를 자식클래스가 물려받는 것입니다.
이때 extends 키워드를 사용합니다.
예제
class Animal {
void sound() {
System.out.println("동물이 소리를 냅니다");
}
}
class Dog extends Animal {
}
설명
- Dog는 Animal을 상속
- sound() 메서드를 그대로 사용 가능
- 공통 기능을 재사용하여 중복을 줄임
2. 상속의 목적
- 코드 재사용성 증가
- 클래스 확장성 향상
- 객체 간 계층 구조 형성
- 유지보수성 향상
상속을 통해 부모클래스의 기능을 그대로 활용하거나 확장할 수 있습니다.
3. 오버라이딩(Overriding)이란?
오버라이딩은 부모클래스에서 정의된 메서드를 자식클래스에서 다시 정의(재정의) 하는 것입니다.
즉, 부모 메서드의 이름, 매개변수, 반환타입을 그대로 유지하면서 내용만 바꾸는 것입니다.
예제
class Dog extends Animal {
@Override
void sound() {
System.out.println("멍멍");
}
}
설명
- 부모의 sound()를 자식이 자신의 방식에 맞게 재정의
- @Override를 사용하면 오타나 잘못된 재정의를 컴파일러가 체크
4. 오버라이딩 조건
오버라이딩이 성립하려면 다음 조건을 반드시 만족해야 합니다:
- 메서드 이름 동일
- 매개변수(파라미터) 동일
- 반환 타입 동일
- 부모 메서드보다 더 좁은 접근 제어자 불가
(예: 부모가 public이면 자식도 public이어야 함) - static 메서드는 오버라이딩 불가 (숨김(Hiding)만 가능)
5. 오버라이딩이 필요한 이유
- 부모의 기능을 상황에 맞게 수정하기 위해
- 다형성(Polymorphism)을 구현하기 위해
- 자식 클래스마다 다른 동작을 정의할 수 있음
예:
Animal a = new Dog();
a.sound(); // "멍멍" 출력 (다형성)
6. 상속 + 오버라이딩 전체 예제
class Animal {
void sound() {
System.out.println("동물 소리");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("멍멍");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("야옹");
}
}
public class Main {
public static void main(String[] args) {
Animal a1 = new Dog();
Animal a2 = new Cat();
a1.sound(); // 멍멍
a2.sound(); // 야옹
}
}
설명
- Animal 타입으로 묶였지만, 실제 객체(Dog, Cat)에 따라 동작이 달라짐
- 이는 오버라이딩 + 상속의 조합으로 가능해진 다형성의 대표 예시
7. 정리
- 상속(Inheritance): 부모클래스의 기능을 자식클래스가 물려받는 것
- 오버라이딩(Overriding): 부모의 메서드를 자식이 다시 정의하는 것
- 두 개념은 함께 사용되어 객체지향의 핵심인 코드 재사용, 확장성, 다형성을 실현
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 자식 클래스 호출 (0) | 2025.12.22 |
|---|---|
| [Java] 부모 생성자 호출 (super()) (0) | 2025.12.21 |
| [Java] 상속, 부모클래스, 자식클래스 (0) | 2025.12.20 |
| [Java] 접근제어 (public, private, protected, default) (0) | 2025.12.20 |
| [Java] void 메소드 호출 (0) | 2025.12.19 |
Comments
