ch7-1 상속(Inheritance)
Parent라는 class가 있다. Child class를 만들 때 Parent를 부모로 한다. Parent와 Child는 상속관계에 있다.
자손은 조상의 모든 멤버를 상속받기 때문에 부모의 멤버만 받는 것이 아니라 부모의 부모 것도 받는다. 단 생성자, 초기화 블록은 제외한다.
코드를 보면 Parent 멤버 1개, 자식의 멤버는 없고 상속 받은 멤버 1개가 있다. class Child extends Parent { }에 맴버가 하나도 없는 거 같지만 부모를 모두 물려받아 int age가 들어있다. 자신의 멤버는 없고 상속받는 멤버가 있다. Parent 멤버 1개, Child 멤버 1개 이므로 두 class 멤버 개수가 같아 조건을 만족한다.
자손 클래스의 새로운 멤버를 추가해도 부모 클래스는 영향을 받지 않는다. Parent class는 멤버 1개, Child class의 멤버는 자신 멤버 1개, 상속 받은 멤버 1개 총 2개이다. 상속을 하면 자식의 멤버가 계속해서 불어나 확장되어 이를 extend라 한다. 따라서 키워드 "extends"를 사용한다.
Point class를 2차원 좌표의 한 점 (x, y)가 있다. 이때, 3차원 좌표의 한 점 (x, y, z)을 갖는 Point3D를 만든다. 기존의 Point class와 관련없는 class를 만들 수 있고, Point class를 상속받아 만들 수 있다. 왼쪽은 Point class가 변경되어도 영향 받지 않는다. 하지만 오른쪽의 class는 상속관계에 있어 Point class의 영향을 받는다. Point class의 멤버 int y가 없어지면 Point3D의 멤버 개수도 달라진다.
객체를 만들면 두 객체의 차이가 없다. 상속받은 것은 멤버가 없어 보이는 것 같지만 실제로는 int x, y가 있다. 결론은 상속받은 class는 부모의 멤버, 자신의 멤버가 합쳐져 객체를 생성한다.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-10,11 참조변수 super, 생성자 super() (0) | 2023.04.15 |
---|---|
ch7-7~9 오버라이딩(overriding) (0) | 2023.04.13 |
ch7-5,6 단일상속 (0) | 2023.04.13 |
ch7-3,4 클래스 간의 관계, 상속과 포함 (0) | 2023.04.13 |
ch7-32 추상 메서드 - 수정ing (0) | 2023.03.26 |