본문 바로가기
3.1 SpringBoot/Java

[java/기초] 상속

by Dohi._. 2024. 7. 10.
728x90

상속(Inheritance)

기존 클래스에 기능 추가 및 재정의하여 새로운 클래스를 정의

새로운 클래스 뒤에 extends와 기존 클래스를 적어서 표현

  • 부모 클래스 : 상속대상이 되는 기존클래스
  • 자식 클래스 : 기존 클래스를 상속하는 클래스

부모 클래스의 필드와 메소드가 상속되는데(생성자, 초기화블록은 상속X)

  1. 다중상속은 불가능하다(자식1개에 부모2개 불가능) → 단일 상속만 가능
  2. 반대로 부모클래스 1   자식클래스 2개이상 가능
  3. 상속받은 자식클래스는 다른 자식클래스의 부모클래스로 가능하다.
  4. prviate의 맴버는 자식클래스에서도 접근불가
  5. default 맴버는 내부 패키지의 자식클래스만 접근가능
  6. 같은 내용의 코드를 한 곳에서 관리함으로써 코드의 중복이 줄어듦.
//상속 
class 자식클래스명 extends 부모클래스명{

}

Super

  • this: 자기자신
  • super: 부모클래스 
    • 자식 클래스에서 부모 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수
  • super() : 부모클래스의 생성자 호출
    • Object 클래스를 제외한 모든 클래스는 this()혹은 super()를 호출해야함

Overriding(오버라이딩)

부모 클래스의 메소드를 자식 클래스에서 재정의.

오버라이딩의 조건

  • 메소드 선언부는 부모 클래스의 메소드와 동일
  • 반환타입에 한하여, 부모클래스의 반환타입으로 변환할 수 있는 타입으로 변경가능
  • 부모 클래스의 메소드보다 접근제어자를 더 좁은 범위로 변경 불가
  • 부모클래스의 메소드보다 더 큰 범위(많은 수)의 예외 선언 불가
  • 인스턴스 메서드를 static 제어자로 바꿀 수 없음

 

클래스간의 관계

 

상속관계 : is - a 관계

  • 치타는 동물이다 (O)
  • 동물은 치타다     (X)
    • 부모 클래스 : 동물
    • 자식 클래스 : 치타

 

포함 관계 : has - a 관계

하나의 클래스를 다른 클래스의 참조변수로 사용하는경우

728x90

'3.1 SpringBoot > Java' 카테고리의 다른 글

[java/기초] 추상클래스  (0) 2024.07.13
[java/기초] 다형성  (0) 2024.07.11
[Java/기초] 클래스와 객체  (0) 2024.07.09
[Java/기초]조건문 ,반복문  (0) 2024.07.07
[java/기초] 연산자  (0) 2024.07.07

댓글