[Study] Java | 07 상속

DAVEMINS·2023년 10월 17일
0

Java

목록 보기
7/15
post-thumbnail

07-1 상속

  • 클래스 상속

중복되는 코드를 줄여준다. 부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져오기 때문에 유지 보수 시간을 최소화한다.

extends 뒤에 어떤 부모 클래스를 상속받을 것인지 결정

필드, 메소드에 접근이 가능하다.

  • 부모 생성자 호출

자식 객체를 생성하면, 부모 객체가 먼저 생성되고 그 다음에 자식 객체가 생성된다

→ 부모 생성자는 자식 생성자의 맨 첫 줄에서 호출된다

  • 메소드 재정의

상속된 이부 메소드는 자식 클래스에서 다시 수정해서 사용

@Override 어노테이션 → 메소드가 정확히 재정의된 것인지 컴파일러가 확이

  • final 클래스와 final 메소드
public final class String {}

클래스 선언 시 final 키워드를 class 앞에 붙이면 최종적인 클래스가 되어 자식 클래스를 만들 수 없음

메소드 선언 시 final 키워드를 앞에 붙이면 최종적인 메소드가 되어 재정의 할 수 없음

07-2 타입 변환과 다형성

  • 자동 타입 변환

다형성 : 사용 방법은 동일하지만 다양한 객체를 이용한 다양한 실행 결과가 나오도록 하는 성질

메소드 재정의 + 타입 변환 → 다형성

자동 타입 변환 : 자식은 부모 타입으로 자동 타입 변환이 가능하다

자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근이 가능하다

  • 필드의 다형성

필드 타입을 부모 타입으로 선언하면 다양한 자식 객체들이 저장될 수 있기 때문에 필드 사용 결과가 달라질 수 있다

  • 매개변수의 다형성

매개변수에 자식 객체를 지정

클래스 타입의 매개변수가 선언 → 그 클래스를 상속 받은 타입의 매개값을 넘겨주었을 때, 자동 타입 변환

  • 강제 타입 변환

부모 타입을 자식 타입으로 변환하는 것, 자식 타입을 부모 타입으로 자동 변환한 후 다시 자식 타입을 변환할 때 가능

  • 객체 타입 확인
boolean result = 좌항(객체) instanceof 우항(타입)

07-3 추상 클래스

  • 추상 클래스의 용도

추상 : 실체 간에 공통되는 특성을 추출한 것

실체 클래스 : 객체를 직접 생성할 수 있는 클래스

추상 클래스 : 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스

공통된 필드와 메소드의 이름을 통일할 목저

실체 클래스를 작성할 때 시간 절약, 규격

  • 추상 클래스 선언

클래스 선언에 abstract 키워드를 붙인다

new 연산자를 통해 객체를 만들지 못하고, 상속을 통해 자식 클래스만 만들 수 있음

  • 추상 메소드의 재정의

추상 메소드 : 하위 클래스에 반드시 실행 내용을 채우도록 강제하고 싶은 메소드가 있을 경우 선언

0개의 댓글