본문 바로가기
Java

Java - 상속

by MoonGa 2023. 3. 20.

상속?

  • 객체지향에서 사용됨.
  • 부모클래스와 자식클래스가 존재, 자식클래스는 부모클래스를 상속받는다.
  • 일반화 시킨다 --> 자식클래스들을 부모클래스로 부를 수 있는 걸 말함.
  • 상속 = 일반화 + 확장 
  • 결합도가 높은 관계는 상속임(객체와 객체간의 관계 중) --> 웬만하면 상속은 사용하지 말기.
  • 상속 선언 방법: class 클래스명 extends 부모 클래스명{}
  • 아무것도 상속받지 않으면 자동으로 java.lang.Object를 상속받음.

다형성 - 메소드 오버라이딩

  • 상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)가 재정의 하는 것.
  • 메소드 이름, 파라미터 갯수, 타입 등이 모두 동일해야함.
  • 메소드가 오버라이딩 되면 무조건 자식의 메소드가 실행됨!! (참조 타입이 부모타입이다 하더라도 실제 동작은 인스턴스에서 오버라이딩된 기능이 동작함 --> 자식의 메소드 실행)
  • intellj에서 cmd + enter 시, 열리는 메뉴에서 Override Methods를 누르면 쉽게 메소드를 오버라이딩 할 수 있음
  • 자식 클래스가 여러개의 메소드를 가지고 있더라도 오버라이딩하는 부모 클래스의 메소드만 사용가능함!!

필드와 메소드 오버라이딩

  • 필드는 타입을 따라가고, 메소드는 오버라이딩된 자식의 메소드가 실행됨.
  • 필드는 오버라이딩 된다고 하더라도, 부모타입을 따라감.
  • 메소드가 오버라이딩되면 무조건 자식의 것이 실행됨!!!!
  • 정보 은닉? 객체지향프로그래밍의 중요한 기법으로, 중요한 필드는 은닉하고, 필드는 메소드를 통해서만 접근해서 사용하도록함.(즉 필드는 외부에서 접근못하도록 해야함)
  • --> 객체 지향 문법 중 접근 지정자를 사용해서 은닉해야함.

getter, setter 메소드

  • private 접근 지정자를 사용하면, 외부에서 필드를 통해 접근할 수 없음.
  • private 필드를 접근하기 위해 제공하는 메소드가 setter, getter메소드임.
  • intellj에서 ctrl + enter 시, Getter and setter가 보이는 메뉴를 통해 자동생성가능.
  • setter, getter메소드를 프로퍼티(property)라고 함.(나중에 스프링에서 사용)

 

Object가 오버라이딩하라고 제공하는 메소드

  • toString():
    • intellj에서 ctrl + enter 시, tostring메소드 오버라이딩 가능.
  • equals() & hashCode():
    • equals는 같은 값인가를 비교할때 사용함 --> 기준이 필요함 --> 즉, 오버라이딩해서 사용해야함.
    • hash라는 알고리즘을 사용하려면, hashcode사용 or 값이같은지 비교 --> hash잘 사용할 수 있음.

 

'Java' 카테고리의 다른 글

Java - 추상 클래스  (0) 2023.03.22
Java - 생성자  (0) 2023.03.21
Java - 추상화, 다형성, 패키지  (0) 2023.03.18
Java - method, field  (0) 2023.03.18
Java - 객체지향문법  (0) 2023.03.16