객체지향 상속이란
속성 및 메서드 집합을 공유하는 클래스 계층 구조를 위해
클래스에서 파생할 수 있는 이론이다
상속 계층 선언
자바에서 클래스는 하나의 다른 클래스에서만 파생될수있다
이 클래스를 수퍼 클래스 또는 상위 클래스라고 한다.
이걸 상속 받은 클래스를 하위 클래스 또는 자식 클래스라고 한다.
extends 사용해서 하위 클래스를 확장시킨다.
상속 접근자
상속 받은 하위 클래스는
상위 클래스의 public 또는 protected 접근자만 사용할 수 있다.
만약 서브 클래스와 수퍼 클래스가 같은 패키지 내부에 있다면
패키지 전용 접근자도 사용할 수 있다.
super 키워드를 사용해 수퍼 클래스의 메서드를 호출하는데 사용할수있다.
메서드 재정의
상속은 슈퍼클래스의 모든 public, protected 클래스를 하위 클래스에 추가하고
하위 클래스에서 구현을 대체 할 수 도 있다.
이 메커니즘을 다형성이라 한다.

하위 클래스에서 brewCoffee 를 오버라이드 하면
ESPRESSO 의 경우엔 하위 클래스에서 구현을 하고
아닌 경우엔 상위 클래스의 brewCoffee 를 쓸 수 있는 로직이다.
만약 하위 클래스에서 오버라이드 하지 못하게 막으려면?
final 을 붙여주면 된다.

기본적으로 생성자가 부르는 모든 메소드는 final로 해주는게 좋다.
하위 클래스에서 오버라이드 해버리는 경우가 생길수있으니.
서브 클래스는 슈퍼 클래스의 타입이 될 수 있다.
예를들면
BasicCoffeeMachine 이 PremiumCoffeeMachine 의 슈퍼클래스인경우에
BasicCoffeeMachine 는 Obejct 와 BasicCoffeeMachine 타입이고,
PremiumCoffeeMachine 는 PremiumCoffeeMachine, BasicCoffeeMachine 와 Object 타입이 될 수 있다.
이것 때문에 PremiumCoffeeMachine 는 BasicCoffeeMachine 타입이될 수 있다.

이것때문에 슈퍼클래스는 서브클래스의 모든걸 실행시킬 수 있다.
추상 클래스 정의
추상 클래스는 extends 할 순 있지만 인스턴스화 할 수 없다.
개념적 일반화를 하기 좋다.
추상클래스는 추상 메서드가 없어도 되지만
추상 메서드는 꼭 추상클래스에서만 선언 해야한다.
요약
상속은 슈퍼 클래스를 확장시켜 서브 클래스를 만들 수 있는 강력한 기능
서브 클래스는 모든 public, protected 메서드 ,속성을 상속한다.
메서드를 재정의 할 수 있고 모든 유형의 슈퍼 클래스로 캐스팅 할 수 있다.
'Java > 객체지향 설계' 카테고리의 다른 글
객체지향 설계 - 단일 책임 원칙 (0) | 2021.03.05 |
---|---|
객체지향 특징 - 다형성 (0) | 2021.03.05 |
객체지향 특징 - 캡슐화 (0) | 2021.03.05 |
객체지향의 특징 - 추상화 (0) | 2021.03.03 |
Java 란? (0) | 2019.11.11 |