[1일1쓰기] Day 18 - 이것이 자바다 7장

7.1 상속 개념

상속 = 부모가 자식에게 물려주는 행위

부모 클래스 = 상위 클래스, 자식 클래스 = 파생 클래스

7.2 클래스 상속

class Child extends Parents {
  // 필드
  // 생성자
  // 메서드
}

7.3 부모 생성자 호출

7.4 메소드 재정의

7.4.1 메소드 재정의(@Override)

메소드 오버라이딩: 상속된 메소드의 내용이 자식 클래스에 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의하는 것을 말한다.

  • 부모의 메소드와 동일한 시그니처(리턴 타입, 메소드 이름, 매개 변수 리스트)를 가져야 한다.
  • 접근 제한을 더 강하게 오버라이딩할 수 없다 → 부모 메소드가 public 접근 제한을 갖고 있을 경우 자식 메소드가 default나 private 접근 제한으로 수정할 수 없다는 것. 반대는 가능함 (부모가 default 접근제한을 가지면 자식이 public 접근 제한을 가질 수 있음)
  • 새로운 예외를 throws할 수 없다

7.4.2 부모 메소드 호출(super)

7.5 final 클래스와 final 메소드

7.5.1 상속할 수 없는 final 클래스

final 클래스는 최종적인 클래스이므로 상속할 수 없는 클래스가 된다 ⇒ 부모 클래스가 될 수 없음.

7.5.2 오버라이딩할 수 없는 final 메소드

메소드 선언시 final 키워드를 붙이면 이 메소드는 최종적인 메소드가 되어 오버라이딩할 수 없게 됨.

7.6 protected 접근 제한자

7.7 타입 변환과 다형성

다형성: 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질(?) → 바로 눈에 들어오진 않네..좀 더 읽어봐야겠음

클래스 타입의 변환은 상속 관계에 있는 클래스 사이에서 발생한다. 자식 타입은 부모 타입으로 자동 타입 변환이 가능하다.

7.7.1 자동 타입 변환(Promotion)

프로그램 실행 도중 자동으로 타입 변환이 일어나는 걸 말함.

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

7.7.2 필드의 다형성

7.7.3 하나의 배열로 객체 관리

7.7.4 매개 변수의 다형성

7.7.5 강제 타입 변환(Casting)

강제 타입 변환 = 부모타입을 자식타입으로 변환하는 것. 정확히 말하자면 자식 타입에서 부모 타입으로 변환된 것이 다시 자식 타입으로 변환할 때 강제 타입 변환할 수 있음.

자식클래스 변수 = (자식클래스) 부모클래스타입;

7.7.6 객체 타입 확인(Instanceof)

7.8 추상 클래스

7.8.1 추상 클래스의 개념

추상(abstract) = 실체 간에 공통되는 특성을 추출한 것.

추상 클래스는 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들었기 때문에 객체를 직접 생성해서 사용할 수 없다. 다시 말해 추상 클래스는 new 연산자를 사용해서 인스턴스를 생성시키지 못함 → 공통되는 필드와 메소드를 추출해서 만들었으므로, new 연산자를 사용해서 인스턴스를 생성하지 못한다라? 잘 이해가 안된다. 그냥 그런 것이라고 이해하고 넘어가면 되는 건가?

7.8.2 추상 클래스의 용도

첫 번째, 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적

두 번째, 실체 클래스를 작성할 때 시간을 절약

7.8.3 추상 클래스 선언

7.8.4 추상 메소드와 오버라이딩

추상 메소드는 추상 클래스에서만 선언할 수 있고 메소드의 선언부만 있고 메소드의 실행 내용인 중괄호 {} 가 없다.

좋은 웹페이지 즐겨찾기