본문 바로가기
Back-End/Java

상속 - 01

by newny 2022. 12. 21.
반응형

클래스 상속

public class 자식클래스 extends 부모클래스 {
}
  • 프로그램에선 자식 클래스가 부모 클래스를 선택
  • 단 하나의 부모 클래스만 상속 받을 수 있음 (다중상속x)
  • 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외
  • 부모 클래스와 자식 클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외

 

부모 생성자 호출

public 자식생성자() {
  super();
}
  • 자식 객체를 생성하면, 부모 객체가 먼저 생성되고 그 다음에 자식 객체가 생성됨
  • 부모 클래스에 기본 생성자가 없고 매개변수를 갖는 생성자만 있다면 super(매개값,...) 코드를 넣어줘야 함
  1. 자식 생성자 호출
  2. 자식 생성자에서 super();호출
  3. 부모 객체 생성
  4. 자식 객체 생성

 

메소드 오버라이딩

  • 부모 클래스에게 상속받은 메소드를 자식 클래스에 맞게 재정의 하는 것
  • 메소드가 오버라이딩 됨에 따라 부모 메소드는 숨겨지고, 자식 메소드가 우선적으로 사용됨

 

메소드 오버라이딩 규칙

  • 부모 메소드의 선언부와 동일해야 함
  • 접근 제한을 더 강하게 오버라이딩 할 수 없음
  • 새로운 예외를 throws 할 수 없음

 

부모 메소드 호출

super.부모메소드();
  • super는  부모 객체를 참조하고 있기 때문에 부모 메소드에 직접 접근할 수 있음

 

final 클래스

  • 최종적인 클래스이므로 더 이상 상속할 수 없는 클래스가 됨
  • 부모 클래스가 될 수 없기 때문에 자식 클래스를 만들 수 없음
public final class String { ... }

 

final 메소드

최종적인 메소드이므로 오버라이딩할 수 없는 메소드가 됨

부모 클래스에서 선언된 final 메소드는 자식 클래스에서 재정의 할 수 없음

 

 

protected 접근 제한자

같은 패키지에서는 default 처럼 접근이 가능하나, 다른 패키지에서는 자식 클래스만 접근을 허용함

반응형

'Back-End > Java' 카테고리의 다른 글

상속 - 02  (0) 2022.12.22
클래스 - 02  (0) 2022.12.16
클래스 - 01  (0) 2022.12.11

댓글