본문 바로가기

Java/개념정리

객체지향개념(2)_상속, 포함, 오버라이딩, super

1. 상속

  • 기존 클래스를 재사용해서 새로운 클래스를 작성하는 것
  • 두 클래스를 조상과 자손으로 관계를 맺는것
  • 자손은 조상의 생성자 초기화블럭을 제외하고 모든 멤버를 상속받는다. (조상의 생성성자로 초기화한다.)
  • 공통부분은 조상, 개별부분은 자손에서 관리
  • 자바는 단일 상속만을 허용한다.
    • 비중이 높은 클래스 하나만 상속관계, 나머지는 포함관계로 한다.
  • 조상이 없는 클래스는 자동적으로 Object클래스를 상속받는다.
    • 상속계층도의 최상위에는 Object클래스가 위치한다.
    • 모든 클래스는 11개의 메서드를 상속받는다. (toString(), equals(Object obj)....)

2. 포함

  • 한 클래스의 멤버변수로 다른 캘르스를 선언하는 것
  • 작은 단위의 클래스를 만들고 이들을 조합해 커다란 클래스를 만든다
상속은 ~은 ~이다 (is-a)
포함은 ~은 ~을 가지고 있다 (has -a)

 

3. 오버라이딩

정의

  • 조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것
  • 덮어쓰는 것

조건

  • 선언부가 같아야한다. (이름, 매개변수, 리턴타입)
  • 접근제어자를 좁은 범위로 변경할 수 없다.
    • default는 public, protected으로만 변경 가능
  • 조상클래스의 메서드보다 많은 수의 예외 선언 불가

오버로딩과 차이점

오버라이딩은 상속받은 메서드의 내용을 변경하는 것이지만 오버로딩은 새로운 메서드를 정의하는 것이다.

 

 

4. super()

  • 조상의 생성자
  • 조상의 멤버들을 초기화 할때는 자손의 생성자의 첫 문장에서 조상의 생성자를 호출해야한다.
    • 모든 클래스의 생성자 첫 줄에는 생성자 호출 필수(같은 클래스의 다른 생성자 or 조상의 생성자)
      • 호출하지 않으면 자동적으로 컴파일러가 super();를 생성자 첫줄에 삽입한다.(조상클래스의 기본생성자 필수 정의)

자바의 정석 7장