상속

김현·2023년 7월 17일

자바

목록 보기
16/31

1. 클래스간의 상속이란?

  • 클래스간에는 부모-자식의 상속 관계를 설정할 수 있다
  • 부모 클래스 A를 자식클래스 B가 상속받을 때, B는 A의 모든 멤버변수와 메서드를 자신의 것을 상속 받게 된다.
    (단, private로 설정된 기능은 상속되지 않는다.)
  • 상속가능 여부 : public, protected(많이 사용되지 않음)
  • B는 A의 public, protected 기능들을 직접적으로 코딩하지 않더라도 자신의 것으로 사용할 수 있게 된다.

2. 상속 정의 방법

  • extends 키워드를 사용하여 부모 클래스의 이름을 명시
    public class 자식클래스 extends 부모클래스{...}

3. 클래스 다이어그램을 통한 상속의 표현

  • 클래스의 구조를 표현하는 클래스 다이어그램에서 상속은 자식 클래스가 부모 클래스를 가리키는 화살표로 표현한다.(부모 <- 자식)
  • 상속관계가 이루어 질때 부모 클래스를 super클래스라고 한다.

4. 상속의 활용

  • 기존에 존재하는 클래스의 소스 수정 없이 기능을 확장하고자 하는 경우
  • CalcChild 클래스는 CalcParent 클래스를 상속받기 때문에 별도의 소스 코딩 없이도 plus()메서드와 minus()메서드를 포함하게 된다.
  • CalcChild 클래스에 times()메서드와 divdie()메서드를 추가하면 상속받은 메서드에 새로운 기능을 추가하는 효과를 얻을 수 있다.

<복습>

  • 부모 클래스에 plus와 minus를 각각 int값으로 선언한다.

  • 자식 클래스를 부모 클래스에 상속시킨다.(extends)
  • 자식 클래스에 times와 divide를 각각 int값으로 선언한다.

1) 부모 클래스에서는 자신이 가지고 있는 plus와 minus에 값을 할당하고 출력할 수 있지만 자식클래스에 있는 times나 divide를 쓸려고 하면 에러가 나는 것을 알 수 있다.

2) 반대로 자식 클래스는 부모 클래스가 가지고 있는 plus와 minus뿐만 아니라 자신이 가지고 있는 times와 divide에도 값을 할당하고 출력할 수 있다.

5. 상속의 활용2

  • 여러 개의 클래스에 공통되는 기능을 추출하여 공유하기
  • 질문/답변 게시물의 한 단위를 표현하기 위한 QNAArticle 클래스와 자료실의 게시물을 표현하기 위한 FileArticle은 글 번호와 제목이라는 공통된 특성을 갖는다.
  • 공통의 기능을 별도의 클래스로 추출해 내면 코드의 재사용 및 수정이 용이하다.
    (부모 클래스에 공통되는 기능을 정의해놓으면 자식클래스들이 각각 상속받을 수 있다.)

.

->

1) 부모 클래스인 Article을 만든다.

2) 공통의 특성인 글 번호와 제목을 부모 클래스에서 각각 num와 title로 정의하여 자식 클래스에서 사용할 수 있게 한다.

3) 자식 클래스 QNAArticle을 만든다.

4) 부모 클래스(Article)에 상속시킨다.

5) 질문/답변을 위한 answer를 정의한다.

6) 자식 클래스 FileArticle을 만든다.

7) 부모 클래스에 상속시킨다.

8) 게시물을 찾기 위한 fileName을 정의한다.

9) 공통된 기능인 QNA와 File을 정의하여 추출하면 언제든지 편하게 사용할 수 있다.

0개의 댓글