객체지향언어에서의 상속은 객체간의 관계를 언어레벨에서 정의하는 방법이다.
부모와 자식 관계를 설명하면 비슷한 맥락일 것이다.
자바는 A라는 물체가 어떤것인지, 무엇에 관련되있는지 알지 못하기 때문에
사용자가 직접 설정해줘야한다.
만약 자바에게 키보드를 무기라고 설정하면 자바는 키보드를
무기라는 카테고리 안에 넣는 그런것이다.
따라서 우리는 class끼리의 상속 설정 과정에서 우리의 상식대로 입력을 해주어야 한다.
그래야 사용자에게 편하고 출력,혹은 다른 상속이나 구성하는데에 지장이 없다.
class car{}
class truck extends car{}
class ship{}
위 코드에서 car와 truck은 각자의 타입이면서 클래스이다.
타입과 클래스는 다르다. 클래스는 대부분 두가지 이상의 타입으로 표현 될 수 있기 때문이다.
그러나 하위 클래스는 상위 클래스에 의존적일 수 밖에 없는데, 하위클래스만큼 깨지기 쉬운것도 없다.
이러한 문제를 해결할 방법이 하나 있는데 바로 상위 클래스를 상속하는 대신 참조하는 private 필드를 만드는것.
이런 방법을 구성 이라고 한다.
새로운 클래스의 메서드들은 기존 클래스에서 필요한 메서드를 호출하면 된다.
이를 전달이라고 하고 해당 메서드를 전달 메서드라고 한다.
composition은 기존 클래스의 세부 구현과 상관 없기 때문에 기존 클래스가 수정되도 영향을 미치지 않는다.
--------------------------
상속은 is - a 관계라면 구성은 has - a 관계인 것이다.
'JAVA 기초' 카테고리의 다른 글
널? null? (0) | 2020.04.29 |
---|---|
class method 가져다 쓰기 (0) | 2020.04.28 |
생성자 Constructor (0) | 2020.04.28 |
추상 클래스 Abstract class (0) | 2020.04.27 |
메서드 Method (0) | 2020.04.27 |