카테고리 없음

객체지향 프로그래밍의 4가지 요소(1) 상속

바이솔 2024. 7. 11. 16:06

Java는 객체 지향 프로그래밍(OOP) 언어로, OOP의 4가지 주요 요소인 추상화, 캡슐화, 다형성, 상속성을 중심으로 설계되었다. 이 글에서는 그 중에서도 **상속성(Inheritance)**에 대해 자세히 설명한다

 

상속(Inheritance) 이란? 

상속(Inheritance)이란 기존에 존재하던 클래스의 멤버 변수와 메서드를 그대로 물려받아, 멤버 변수 및 메서드를 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다

상속성의 주요 특징

  1. 재사용성: 기존 클래스의 코드를 재사용함으로써 새로운 클래스를 작성하는 데 드는 시간을 절약할 수 있다.
  2. 계층 구조: 클래스 간의 계층 구조를 통해 시스템을 보다 체계적으로 설계할 수 있다.
  3. 유지보수성: 공통된 기능을 부모 클래스에 두고, 변경이 필요할 경우 한 곳에서 수정하면 되므로 유지보수가 용이하다.

상속성 구현 방법

 extends 를 간단하게 사용해 부모 클래스를 지정하면 된다.

 

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

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

public class Main {
    public static void main(String[] args) {
        Child child = new Child();
        child.display(); // 부모 클래스의 메서드 호출
        child.show();    // 자식 클래스의 메서드 호출
    }
}

 

위의 예제에서 Child 클래스는 Parent 클래스를 상속받아 display() 메서드를 사용할 수 있다. 또한, Child 클래스만의 메서드 show()를 추가로 정의할 수 있다.

 

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

상속성에서 중요한 개념 중 하나는 메서드 오버라이딩(Method Overriding)**이다. 자식 클래스에서 부모 클래스의 메서드를 재정의하여 사용할 수 있다.

 

상속성 제한

  • 다중 상속 금지: Java는 클래스의 다중 상속을 허용하지 않는다. 한 클래스는 오직 하나의 부모 클래스만 가질 수 있다. 이는 다이아몬드 문제와 같은 복잡성을 피하기 위함이다.
  • final 키워드: 클래스나 메서드에 final 키워드를 사용하면, 해당 클래스는 상속될 수 없고, 해당 메서드는 오버라이딩될 수 없다.

상속 관련 추가 내용

1) super

super 키워드는 자식 클래스에서 부모 클래스를 참조할 때 사용된다. 주로 부모 클래스의 메서드나 생성자를 호출할 때 사용된다.  자세한 내용은 아래 내용에서 정리했다.

https://for-habit.tistory.com/82

 

Java의 주요 키워드: this, static, super

Java는 객체 지향 프로그래밍 언어로, 다양한 키워드를 통해 코드를 구조화하고 관리한다. 이 글에서는 그동안 헷갈렸던  this, this(), static, super, super() 키워드에 대해 예시를 통해 정리해보겠습니

for-habit.tistory.com

 

2) 메소드 오버라이딩

자식 클래스에서 부모 클래스의 메서드를 재정의하여 사용할 수 있다 자세한 내용은 아래 내용에서 정리했다.

https://for-habit.tistory.com/84

 

Java의 메소드 오버로딩과 메소드 오버라이딩

Java에서 메소드 오버로딩과 메소드 오버라이딩은 다형성을 구현하는 중요한 개념으로  이 글에서는 메소드 오버로딩과 메소드 오버라이딩의 차이점과 사용법을 알아보자. 메소드 오버로딩(Met

for-habit.tistory.com

 

### 자식 클래스는 부모 클래스의 멤버 변수를 상속받긴 하지만 상속받아도 접근 제어는 유지된다.