상속(inheritance)
포스트
취소

상속(inheritance)

상속(inheritance)이란?

  • 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것
  • 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나
  • 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아 새로운 클래스를 생성할 수 있다.
  • 관련 용어
    • 부모 클래스(parent class) or 상위 클래스(super class) or 기초 클래스(base class)
      • 기존에 정의되어 있던 클래스
    • 자식 클래스(child class) or 하위 클래스(sub class) or 파생 클래스(derived class)
      • 상속을 통해 새롭게 작성되는 클래스

상속의 장점

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

사용 방법

//원형
class 자식클래스이름 extend 부모클래스이름 {
    //내용
}

//s:예시
    class Parent {
    private int a = 10;
    public int b = 20;
    }
    class Child extends Parent {
        public int c = 30;
        void display() {
            System.out.println(a); //상속받은 private 필드 참조 (private로는 접근 불가하기 때문에 오류 발생)
            System.out.println(b);    //상속받은 public 필드 참조
            System.out.println(c); //public 필드 참조
        }
    }
//e:예시

super 참조 변수

  • 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 참조 변수
  • 인스턴스 변수의 이름과 지역 변수의 이름이 같을 경우 인스턴스 변수 앞에 this 키워드를 사용하여 구분 가능
  • 부모 클래스의 멤버와 자식 클래스의 멤버 이름이 같을 경우 super 키워드를 사용하여 구별 가능
  • 부모 클래스의 멤버에 접근할 수 있습니다.
  • 인스턴스 메소드에만 사용할 수 있다.
  • 클래스 메소드에서는 사용할 수 없다.
  • 사용 예시
class Parent {
    int a = 10;
}
class Child extends Parent {
    void display() {
        System.out.println(a);
        System.out.println(this.a);
        System.out.println(super.a);
    }
}

super() 메소드

  • 부모 클래스의 생성자를 호출하는 메소드
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.