상속의 개념
자바의 상속은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미합니다. 이 과정에서는 기존 클래스의 모든 필드와 메서드를 물려받아, 새로운 클래스를 생성할 수 있습니다.
부모 클래스와 자식 클래스
- 부모 클래스 (Parent Class, Super Class, Base Class): 다른 클래스에게 자신의 데이터 멤버(필드)와 구성 멤버(메서드)를 물려줄 수 있는 클래스입니다.
- 자식 클래스 (Child Class, Sub Class, Derived Class): 부모 클래스로부터 데이터와 메서드를 상속받아 사용하는 클래스입니다.
상속의 장점
- 코드 재사용: 기존에 작성된 클래스를 재활용할 수 있어, 중복되는 코드를 줄일 수 있습니다.
- 계층적 관계: 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련합니다.
- 유지보수: 부모 클래스의 수정으로 모든 자식 클래스를 수정할 수 있는 효과를 볼 수 있습니다.
상속의 문법
자바에서 상속은 extends 키워드를 사용하여 선언합니다.
class 자식클래스이름 extends 부모클래스이름 {
// 자식 클래스의 멤버 선언
}
예를 들어, Animal 클래스를 상속하는 Dog 클래스를 만들 경우 다음과 같습니다.

상속받지 않는 멤버
- 생성자와 초기화 블록: 부모 클래스의 생성자와 초기화 블록은 자식 클래스에 상속되지 않습니다.
- private 멤버: 부모 클래스의 private 접근 제한을 갖는 필드와 메서드는 자식 클래스에서 접근할 수 없습니다.
- default 멤버: 부모 클래스와 자식 클래스가 서로 다른 패키지에 있다면, default 접근 제한을 갖는 필드와 메서드도 자식 클래스에서 접근할 수 없습니다.
super 키워드
자식 클래스에서 부모 클래스의 멤버에 접근하거나 메서드를 호출할 때 super 키워드를 사용합니다.
class People {
String name;
int age;
public void printMyself() {
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
}

Object 클래스
자바에서 모든 클래스는 자동으로 Object 클래스의 모든 필드와 메서드를 상속받습니다. 따라서, 자바의 모든 클래스는 Object 클래스의 메서드들을 바로 사용할 수 있습니다.
다중 상속
자바에서는 다중 상속을 허용하지 않습니다. 이는 여러 개의 부모 클래스에서 동일한 명칭의 필드나 메서드가 있을 경우, 어떤 부모 클래스의 멤버를 상속받아야 하는지 모호함이 발생하기 때문입니다. 대신, 인터페이스를 사용하여 다중 상속과 유사한 효과를 얻을 수 있습니다.
접근 제한자
상속에서 접근 제한자는 중요한 역할을 합니다. public, protected, default, private의 접근 제한자 중에서 public과 protected 멤버들은 자식 클래스에서 상속될 수 있습니다. 그러나 private 멤버들은 자식 클래스에서 접근할 수 없습니다.
결론
자바의 상속은 기존 클래스의 재사용성을 높이고, 중복 코드를 줄이며, 프로그램의 체계적인 구조를 갖출 수 있도록 합니다. 부모 클래스와 자식 클래스의 관계를 이해하고, 상속의 문법과 제한 사항들을 알고 있으면, 더 효율적이고 유지보수가 쉬운 코드를 작성할 수 있습니다.
'JAVA' 카테고리의 다른 글
| JAVA에서 사용하는 Interface에 대한 이야기 (1) | 2024.12.16 |
|---|---|
| JAVA에서 사용하는 추상 클래스에 대한 이야기 (1) | 2024.12.16 |
| 자바에서 사용하는 Getter와 Setter 알아보기 (0) | 2024.12.13 |
| 자바에서 사용하는 생성자(Constructor)에 대해 알아보기 (1) | 2024.12.13 |
| 자바에서 메서드 오버로딩(Method Overloading) 하기 (0) | 2024.12.12 |