[개인공부] ch 7 상속

Walter Mitty·2022년 11월 12일
0

개인공부

목록 보기
9/40
post-thumbnail

상속(Inheritance)

  • 기존의 클래스로 새로운 클래스를 작성하는 것.(코드의 재사용)
  • 두 클래스를 부모와 자식으로 관계를 맺어주는 것.
class 자식클래스 extends 부모클래스 {
	//
}
  • 자손은 조상(부모의 부모까지도)의 선택의 여지없이 모든 멤버를 상속받는다.(생성자, 초기화블럭 제외)
    • 마치 탈..모..처럼...안 받고 싶다고 안 받을 수 없음.
  • 자손의 멤버 개수는 조상보다 적을 수 없다.(같거나 많다)
  • 자손의 변경은 조상에 영향을 미치지 않는다.
    • 그래서 Child 클래스는 멤버가 2개이다. 자신의 멤버(play()) 1개, 상속받은 멤버(age) 1개

  • 클래스의 관계
    • 상속
    • 포함

포함(Composite)

  • 클래스의 멤버로 참조변수를 선언하는 것.
    • 오른쪽 Circle 클래스가 Point를 포함시키고 있는 것임.
      따라서, Circle과 Point는 포함관계.
    • 포함은 이처럼 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하고, 그 타입의 객체를 만드는 것(선언)을 말한다.
    • 왼쪽 Circle은 Point와 아무 관계도 아님.

클래스 간의 관계 결정하기

말이 되는지 생각해 보면 된다.

  • 상속관계 '~은 ~이다.(is-a)'
  • 포함관계 '~은 ~을 가지고 있다.(has-a)'

예) 포함관계.
| Circle.java

class Circle {
	Point c = new Point();
    int r;
}

| Point.java

class Point {
	int x;
    int y;
}

→ 원(Circle)은 점(Point)이다. X 말이 안됨
→ 원(Circle)은 점(Point)을 가지고 있다. O 말이 됨.

예2) 상속관계
| Circle.java

class Circle extends Point {
	int r;
}

0개의 댓글