상속(Inheritance)이란 무엇인가요?

김상욱·2024년 11월 18일

상속(Inheritance)이란 무엇인가요?

기존 클래스(부모 클래스 또는 슈퍼 클래스)의 속성과 메서드를 새로운 클래스가 물려받아 사용하는 기능.

코드 재사용성 : 부모 클래스에서 정의한 메서드와 속성을 자식 클래스가 재사용하여 코드 중복성을 줄이고, 개발 속도를 높이며 유지보수 쉽게.
확장성 : 부모 클래스의 기존 기능을 확장하거나 변경(오버라이딩)하여 새로운 기능을 추가
계층 구조 형성 : 클래스 간 계층적 관계를 형성해 코드의 구조를 명확히 할 수 있음
다형성과 연계 : 상속은 다형성을 지원하는 기반이 됨.

// 부모 클래스
class Animal {
    String name;

    void eat() {
        System.out.println(name + " is eating.");
    }
}

// 자식 클래스
class Dog extends Animal {
    void bark() {
        System.out.println(name + " is barking.");
    }
}

// 실행
public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.name = "Buddy";
        dog.eat();  // 부모 클래스의 메서드 사용
        dog.bark(); // 자식 클래스의 메서드 사용
    }
}
class Animal {
    void sound() {
        System.out.println("Some sound...");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Bark");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.sound();  // "Bark" 출력
    }
}
class Animal {
    Animal() {
        System.out.println("Animal constructor");
    }
}

class Dog extends Animal {
    Dog() {
        super(); // 부모 클래스 생성자 호출
        System.out.println("Dog constructor");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
    }
}

제약

  • 다중 상속 금지 : java는 클래스의 다중 상속을 지원하지 않음. 다중 상속이 필요한 경우, 인터페이스를 사용
  • 접근 제한자 : private로 선언된 멤버는 상속받더라도 자식 클래스에서 직접 접근할 수 없음. protected 멤버는 같은 패키지나 상속받은 클래스에서 접근 가능
  • IS-A 관게 : 상속은 IS-A 관계일 때 사용

0개의 댓글