새소식

Java/제대로 파는 자바

[제대로 파는 자바 (Java)-by 얄코] 상속

  • -

해당 게시물은 [제대로 파는 자바 (Java) - by 얄코]를 수강한 내용을 바탕으로 작성하였습니다.

 

 

 

 

드라이브스루를 갖춘 얄코치킨의 클래스를 만든다면?

  • 기존 얄코치킨 클래스의 모든 필드와 메소드 포함
  • 드라이브스루 관련 필드와 메소드 추가
  • ⭐ YalcoChicken 을 부모로 하는 자식 클래스 YalcoChickenDT 만들기
    • extends 연산자 사용

 

  • 디버그 모드로 dtStore1 인스턴스 살펴볼 것
    • 부모 클래스의 요소들 갖고 있음 확인 - 상속 inheritance
  • 부모 클래스의 protected 필드들을 private 으로 바꿔 볼 것
    • 💡 상속이 안 되는 것은 아님 - 자식클래스의 코드에서 사용하지 못할 뿐

 

 

 

 

 

메소드 오버라이딩

  • 부모가 가진 같은 이름의 메소드를 자식이 다르게 정의
    • ‘저는 제 방식대로 하겠습니다.’
  • 오버로딩과 혼동하지 말 것

 

 

public void func() → 메소드 오버라이딩

 

오버라이드 편의기능

  • 메뉴 - 코드 - 생성 - 메소드 재정의 선택 (생성자까지 진행)

 

super 부모의 생성자/메소드 호출

  • 부모 클래스에 생성자가 작성되었을 시
    • 자식 클래스에도 생성자 작성 필요
      • 생성자를 제거해 볼 것
    • super 를 사용해서 부모의 생성자를 먼저 호출
      • 이후 추가로 필요한 내용 작성
      • 즉 부모의 인스턴스부터 생성 후 이를 기반으로 자식 인스턴스 생성
      • 자식 클래스의 생성자는 super 로 시작해야 함
        • 순서 바꿔 볼 것
  • 부모의 기타 메소드를 자식 클래스에서 사용시 앞에 super. 를 붙임
    • 즉 super 는 부모 클래스의 인스턴스(실존하지 않음 - 자신 안의 부모 유전자)를 가리킴
      • this 가 해당 클래스의 인스턴스를 가리키듯…
    • 어떤 메소드에서든, 어떤 위치에서든 사용 가능

 

 

@Override 어노테이션

  • 어노테이션 : 이후 배울 것
  • 부모의 특정 메소드를 오버라이드함을 명시
    • 없어도 오류가 나지는 않음
    • 붙였는데 메소드명이 다를 시 오류 (실수 방지)

 

 

 

 

 

 

부모 클래스에 명시된 생성자가 없는 경우 자식 클래스에서도 작성할 필요 없음

💡 상속의 또 다른 용도

  • 자신이 만든 것이 아닌 클래스를 커스터마이즈 (마개조)
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.