...그냥 잡담 없이 시작할게요~^^

상속... 엄청나게 중요한 개념이다!!! 꼭 짚고 넘어가도록 하자!!!


상속 (inheritance)

상속(inheritance)이란 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.

상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아, 새로운 클래스를 생성할 수 있다.

  • 기존에 정의되어 있던 클래스 :
    부모 클래스 (parent class)
    상위 클래스 (super class)
    기초 클래스 (base class)
  • 상속을 통해 새롭게 작성되는 클래스 :
    자식 클래스 (child class)
    하위 클래스 (sub class)
    파생 클래스 (derived class)

묶인 명칭끼리는 모두 같은 말이니 참고하도록 하자.

상속의 장점

  1. 기존에 작성된 클래스를 재활용할 수 있다.
  2. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서는 해당 멤버를 작성하지 않아도 된다.
  3. 클래스 간에 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련한다.

자식 클래스 (child class)

자식 클래스(child class)란 부모 클래스의 모든 특성을 물려받아 새롭게 작성된 클래스를 의미한다.

자바에서 자식 클래스는 다음과 같은 문법을 통해 선언한다.

class 자식클래스이름 extends 부모클래스이름 {...}

자식 클래스가 여러 부모로부터 다중 상속을 받는 것은 불가능하고, 한 개의 부모 클래스로부터 자식 클래스로의 단일 상속 혹은 한 개의 부모 클래스가 여러 개의 자식 클래스에게 상속을 하는 것은 가능하다!

자식 클래스에는 부모 클래스의 필드와 메소드만이 상속되고, 생성자와 초기화 블록은 상속되지 않는다.

또한, 부모 클래스의 접근 제어가 private나 default로 설정된 멤버는 자식 클래스에서 상속 받지만, 접근할 수는 없다.

다음 예제로 위 설명을 정리할 수 있다.

class Parent {
private int a = 10; // private 필드
public int b = 20; // public 필드
}

class Child extends Parent {

    public int c = 30;  // public 필드

    void display() {

      // System.out.println(a); // 상속받은 private 필드 참조 (오류가 나기 때문에 주석 처리)

     System.out.println(b);    // 상속받은 public 필드 참조

      System.out.println(c);    // 자식 클래스에서 선언한 public 필드 참조

    }

}

 

public class Inheritance01 {

    public static void main(String[] args) {

        Child ch = new Child();

        ch.display();

    }

}

실행 결과는 다음과 같다.

20 //public 필드 

30 //자식 클래스에서 선언한 public 필드

super();

this() 메소드가 같은 클래스의 다른 생성자를 호출할 때 사용된다면, super() 메소드는 부모 클래스의 생성자를 호출할 때 사용된다.

모든 자식 클래스의 생성자 첫 줄에 자동으로 추가되며, 부모 클래스의 멤버를 초기화할 수 있도록 해준다.

---공사 중...---

profile
N잡러를 꿈꾸는 코딩 학도의 우당탕탕 코딩 입문기🍳

1개의 댓글

comment-user-thumbnail
2022년 11월 28일

공사완료 언제돼요? 밀린 인건비 처리좀요

답글 달기