어제 오늘 내일

[Java] 상속, 부모클래스, 자식클래스 본문

IT/Java

[Java] 상속, 부모클래스, 자식클래스

hi.anna 2025. 12. 20. 07:17

 

Java에서 상속(Inheritance)은 객체지향 프로그래밍의 중요한 개념으로, 기존 클래스(부모클래스)의 기능을 그대로 물려받아 새로운 클래스(자식클래스)를 만드는 방식입니다. 상속을 사용하면 코드 재사용성이 높아지고, 구조적인 프로그램 설계가 가능해집니다.

 

1. 상속이란?

상속은 하나의 클래스가 다른 클래스의 변수(필드)와 메서드를 물려받는 것을 의미합니다.
Java에서 상속을 사용할 때는 extends 키워드를 사용합니다.

class 자식클래스 extends 부모클래스 { }

 

2. 부모클래스(상위 클래스, Super Class)

부모클래스는 자식클래스가 물려받을 공통 속성과 기능을 정의하는 클래스입니다.

예:

public class Animal {
    String name;

    public void eat() {
        System.out.println("먹습니다");
    }
}

설명

  • Animal은 공통적으로 필요한 기능을 제공하는 부모클래스
  • name, eat()을 자식클래스가 사용할 수 있음

 

3. 자식클래스(하위 클래스, Sub Class)

자식클래스는 부모클래스의 기능을 물려받아 확장하거나 재정의할 수 있는 클래스입니다.

예:

public class Dog extends Animal {

    public void bark() {
        System.out.println("멍멍");
    }
}

설명

  • Dog는 Animal을 상속
  • eat(), name을 그대로 사용할 수 있음
  • bark()처럼 새로운 기능도 추가 가능

 

4. 상속으로 얻을 수 있는 효과

4-1. 코드 재사용

부모 클래스에 정의된 기능을 재사용하여 중복 코드를 줄일 수 있습니다.

4-2. 기능 확장

자식 클래스에서 새로운 기능을 추가하여 부모 클래스의 기능을 확장할 수 있습니다.

4-3. 오버라이딩(Override)

자식 클래스는 부모 클래스의 메서드를 자신에게 맞게 재정의할 수 있습니다.

@Override
public void eat() {
    System.out.println("강아지가 먹습니다");
}

 

5. super 키워드

자식클래스 내부에서는 super 키워드를 이용해 부모클래스의 기능에 접근할 수 있습니다.

부모 메서드 호출

@Override
public void eat() {
    super.eat(); // 부모 메서드 호출
    System.out.println("추가 동작");
}

부모 생성자 호출

public class Dog extends Animal {
    public Dog(String name) {
        super(name); // 부모 생성자 호출
    }
}

 

6. 단일 상속

Java는 단일 상속만 지원합니다.
즉, 자식클래스는 하나의 부모클래스만 상속받을 수 있습니다.

class Child extends Parent1 { } // O
class Child extends Parent1, Parent2 { } // X (불가)

필요한 경우 인터페이스를 통해 다중 구현이 가능합니다.

 

7. 전체 예제

class Animal {
    String name;

    public void eat() {
        System.out.println(name + "이(가) 먹습니다");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("멍멍!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.name = "초코";
        d.eat();   // 부모 메서드
        d.bark();  // 자식만의 메서드
    }
}

출력

초코이(가) 먹습니다
멍멍!

 

8. 정리

  • 부모클래스: 공통 기능을 정의한 클래스
  • 자식클래스: 부모의 기능을 물려받아 확장하는 클래스
  • 상속을 통해 코드 재사용, 확장성, 유지보수성이 향상됨
  • extends 키워드로 상속 구현
  • 자식은 부모의 멤버에 접근 가능하며 필요 시 오버라이딩 가능

 

 

반응형
Comments