본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 상속 (Inheritance) / 포함 (composite) )

by ✲ 2020. 7. 10.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

상속 (Inheritance)

- 기존의 클래스로 새로운 클래스를 작성하는 것 (코드의 재사용) 

- 두 클래스를 부모와 자식으로 관계를 맺어주는 것 (extends 키워드 사용) 

class 자식클래스 extends 부모클래스 {

    // ....

}

- 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외) 

- 자손의 멤버 개수는 조상보다 적을 수 없다. (같거나 많다

- 자손의 변경은 조상에 영향을 미치지 않는다.

 

class Point {            // 2차원 좌표의 한점 (x,y)

    int x; 

    int y;

}

class Point3D{           // 3차원 좌표의 한점 (x,y,z)

    int x; 

    int y; 

    int z;

}

class Point3D extends Point{      //Point 클래스를 상속받아서 int z변수만 선언하여 사용 가능 

    int z;

}

 

포함 (composite)

- 클래스의 멤버로 참조변수를 선언하는 것 

- 작은단위로 클래스를 만들고, 이 들을 조합해서 클래스를 만든다.

class Circle { 

    int x;

    int y;

    int r;

}

class Circle { 

    Point c = new Point();

    int r;

}

class Point {

    int x, y;

}

* Circle이 Point를 포함하고 있음. 

* 어느쪽이 좋다고 말할 수 는 없지만, 구조적으로 조금 다른 

* 포함시킨 쪽이 복잡도가 줄어들긴 함 (참고) 

 

클래스 간의 관계 결정하기 

상속관계 : '~은 ~이다 (is -a)'

포함관계 : '~은 ~을 가지고 있다. (has -a)'

원(Circle)은 점(Point)이다. - Circle is a Point

원(Circle)은 점(Point)을 가지고 있다. - Circle has a Point 

class Circle{ 

    Point c = new Point () ;

    int r;

}   // 포함관계

class Circle extends Point { 

    int r ;

}  // 상속관계 

반응형

댓글