JAVA/포스팅

자바 상속 (Inheritance)

짜집퍼박사(짜박) 2023. 11. 5. 11:08

자바에서 상속(Inheritance)은 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 이미 존재하는 클래스(부모 클래스 또는 슈퍼 클래스)를 기반으로 새로운 클래스(자식 클래스 또는 서브 클래스)를 만드는 메커니즘입니다. 상속을 통해 코드의 재사용과 확장이 가능하며, 부모 클래스의 특성을 자식 클래스에서 확장하거나 수정할 수 있습니다. 이를 통해 유사한 특성을 가진 클래스들을 구조적으로 정리하고 일반적인 코드를 재사용할 수 있습니다. 다음은 자바에서의 상속에 대한 주요 개념과 원리를 설명합니다.

 

1. 부모 클래스와 자식 클래스

상속은 두 개의 클래스 간의 관계를 나타냅니다. 부모 클래스(슈퍼 클래스)는 상속의 기초가 되는 클래스이며, 자식 클래스(서브 클래스)는 부모 클래스로부터 상속받는 클래스입니다.

 

2. extends 키워드

자바에서 상속을 선언하기 위해 extends 키워드를 사용합니다. 자식 클래스는 부모 클래스를 extends 키워드를 사용하여 확장합니다.

class Parent {
    // 부모 클래스의 멤버
}

class Child extends Parent {
    // 자식 클래스의 멤버
}

 

3. 재사용과 확장

자식 클래스는 부모 클래스에서 정의된 속성(필드) 및 메서드를 상속받습니다. 이를 통해 코드의 재사용이 가능하며, 자식 클래스에서 새로운 속성이나 메서드를 추가하거나 부모 클래스의 메서드를 재정의(오버라이드)할 수 있습니다.

 

4. 부모 클래스의 생성자 호출

자식 클래스의 생성자에서는 super() 메서드를 사용하여 부모 클래스의 생성자를 호출할 수 있습니다. 이를 통해 부모 클래스의 초기화 코드를 실행할 수 있습니다.

class Parent {
    public Parent() {
        // 부모 클래스의 생성자
    }
}

class Child extends Parent {
    public Child() {
        super(); // 부모 클래스의 생성자 호출
        // 자식 클래스의 생성자
    }
}

 

5. 메서드 오버라이딩 (Method Overriding)

자식 클래스는 부모 클래스의 메서드를 재정의하여 자식 클래스의 동작을 변경할 수 있습니다. 메서드 오버라이딩은 동일한 이름의 메서드 시그니처를 가져야 합니다.

class Parent {
    public void display() {
        System.out.println("Parent class method");
    }
}

class Child extends Parent {
    @Override
    public void display() {
        System.out.println("Child class method");
    }
}

 

6. super 키워드

super 키워드를 사용하여 자식 클래스에서 부모 클래스의 멤버에 접근할 수 있습니다. 또한 super를 사용하여 부모 클래스의 생성자를 호출할 수 있습니다.

class Child extends Parent {
    public void display() {
        super.display(); // 부모 클래스의 메서드 호출
        System.out.println("Child class method");
    }
}

 

7. 단일 상속

자바는 단일 상속을 지원합니다. 즉, 하나의 자식 클래스는 하나의 부모 클래스만 상속받을 수 있습니다. 이는 클래스 간의 명확한 계층 구조를 유지하고 복잡성을 줄이는데 도움을 줍니다.

상속은 객체 지향 프로그래밍의 중요한 개념 중 하나이며, 클래스 간의 계층 구조를 통해 소프트웨어를 모듈화하고 관리하기 쉽게 만들어줍니다. 객체의 특성을 공통적으로 정의하고 필요에 따라 확장하여 코드를 구조화하고 재사용하는데 유용합니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 추상화 (Abstraction)  (0) 2023.11.05
자바 다형성 (Polymorphism)  (0) 2023.11.05
자바 캡슐화 (Encapsulation)  (0) 2023.11.05
자바 클래스와 객체  (0) 2023.11.05
자바 객체지향언어  (0) 2023.11.05