상속

mingggkeee·2022년 1월 20일
0

Java

목록 보기
2/20

객체지향 언어의 특징(A.P.I.E)

  • 추상화 : 현실의 객체를 추상화해서 클래스를 구성한다.
  • 다형성 : 하나의 객체를 여러 가지 타입(형)으로 참조할 수 있다.
  • 상속 : 부모 클래스의 자산을 물려받아 자식을 정의함으로 코드의 재사용이 가능하다.
  • 데이터 은닉과 보호 : 데이터를 외부에 직접 노출시키지 않고 메서드를 이용해 보호할 수 있다.

상속(Inheritance)

  • 기존 클래스의 자산(멤버)을 자식 클래스에서 재사용하기 위함.
    - 부모의 생성자와 초기화 블록을 상속하지 않는다.
  • 기존 클래스의 멤버를 물려받기 때문에 코드의 절감
    - 부모의 코드를 변경하면 모든 자식들에게도 적용 -> 유지 보수성 향상..!

Object 클래스

  • 모든 클래스의 조상 클래스

hashCode(), equals(), toString() : 대부분 클래스에서 재정의(오버라이딩)해서 사용

단일 상속

  • 다중 상속의 경우 여러 클래스의 기능을 물려받을 수 있으나 관계가 매우 복잡해짐
  • 자바는 단일 상속만 지원
    - 대신 interface와 포함 관계로 단점을 극복 가능

포함 관계

  • 상속 이외에 클래스를 재활용 하는 방법
    - 2개 이상의 클래스에서 특성을 가져올 때 하나는 상속, 나머지는 멤버 변수로 가져온다.

메서드 오버라이딩

  • 조상 클래스에 정의된 메서드를 자식 클래스에서 적합하게 수정하는 것

  • 오버라이딩의 조건

    1. 메서드 이름이 같아야 한다.
    2. 매개 변수의 개수, 타입, 순서가 같아야 한다.
    3. 리턴 타입이 같아야 한다.
    4. 접근 제한자는 부모 보다 범위가 넓거나 같아야 한다.
    5. 조상보다 더 큰 예외를 던질 수 없다.

toString 메서드

  • 객체를 문자열로 변경하는 메서드
  • 궁금한 것은 주소값이 아닌 내용이기 때문에 오버라이딩해서 많이 쓴다.

equals 메서드

  • 두 객체가 같은지 비교하는 메서드
    • 등가비교 연산자 ==로 두 객체의 주소값 비교

  • 두 객체의 내용을 비교할 수 있도록 equals 메서드 재정의
    • 객체의 주소 비교 : == 활용
    • 객체의 내용 비교 : equals 재정의

Super 키워드

  • this를 통해 멤버에 접근했듯이 super를 통해 조상 클래스 멤버에 접근 가능
    • super.를 이용해 조상의 메서드 호출로 조상의 코드 재사용
profile
만반잘부

0개의 댓글