728x90
반응형
여러 예술가들이 자신만의 작품들을 출품한 전시회장에서
담당자들이 오더니 작품 옆에 놓인 돌도끼 하나를 들고 단상으로 올라갔다.
"여기좀 보시오! 이게 이번주의 1등 작품이오!!"
아이고야... 그 돌도끼를 자세히 보니 내가 만든 뗀석기더라...
상속과 포함
이 글을 작성하기 전까지는 구분에 약간 어려움을 가졌던 개념이다.
자동차와 부품, 그리고 각 파츠로는 이해하기가 사실 조금 힘들었다.
지금은 이렇게 설명할 수 있다.
클래스는 "세포" 와 같다.
최초의 세포(미생물)들은 단 세포로써 다른 세포를 먹기만 했을 것이다.
어느 순간, 어떤 피식된 미생물은 소화되지 않고 포식된 미생물의 몸 안에 자리잡게 되었을 것이다.
이렇게 된 포식세포(다세포)는 다른 세포들보다 월등한 성능을 지니게 되었다.
상속
여기서 포식세포와 피식세포는 각 각 하나의 클래스다.
포식세포는 세포
라는 super
클래스에서 상속받아 오게 되었다.
class 포식세포 extends 세포 {
// 포식세포 클래스는 세포의 모든 속성과 메서드를 상속받음
}
포함
그리고 다른 피식세포를 몸 안에 품게 되면서 해당 피식세포의 능력을 이용할 수 있게 되었다.
class 포식세포 extends 세포 {
private 피식세포 내부세포; // 포식세포는 피식세포를 포함하게 되었다.
public 포식세포(피식세포 내부세포) {
this.내부세포 = 내부세포; // 포함 관계를 통해 피식세포의 능력을 이용
}
}
인터페이스
이제 세포는 진화하고 발전하여 하나의 생명체를 이루게 되었다.
그리고 이 세포는 지금부터 인간 몸속 장기를 이루는 하나의 세포가 되었다.
위장에 있다고 치자.
class 포식세포 extends 세포 implements 위장세포할일 {
private 피식세포 내부세포; // 포식세포는 피식세포를 포함하게 되었다.
public 포식세포(피식세포 내부세포) {
this.내부세포 = 내부세포; // 포함 관계를 통해 피식세포의 능력을 이용
}
}
나는 이전까지 여러 클래스에서 사용할 목적을 담은 메서들을 하나의 Functions
라는 이름의 클래스로 만들어 다른 클래스에서 불러들여 사용하곤 했다.
물론 앞으로도 이 방법을 사용할 생각이다.
다만 같은 목적을 가졌으며, 해당 기능을 반드시 넣어야 하는 클래스를 생성할때는 interface
를 만들어 담기로 했다.
interface 위장세포할일 {
public abstract void 위장세포의활동1();
}
이제 이 세포는 위장세포가 할 일이라는 인터페이스를 가지게 되었다.
이 세포가 새로 생성되려면 할 일을 부여받아야한다.
위장세포활동1이라는 메서드를 abstract
로 받게 되면서,
새로이 생성할 때 절대적으로 override
해야만 한다.그렇지 않은 세포는... 아마 죽거나... 암세포가 되겠지.
결론
포식세포였던 세포는 이제는 인간을 이루는 장기인 위장의
체세포가 되어버린 포식세포가 되었다.
포함 관계는 해당 클래스를 내부에 담는거고
상속 관계는 그 클래스의 근본이 어디서부터 시작되느냐 를 말한다.
주저리 주저리 해봤지만 틀릴수도 있다고 생각한다.
계속 공부를 해가고 프로젝트를 진행하면서 내 생각도 달라질 수 있다고 생각한다.
아직까지는 나는 이렇게 생각한다것이다.
728x90
반응형
'TIL' 카테고리의 다른 글
2023년 11월 2일 try catch finally (0) | 2023.11.03 |
---|---|
2023년 11월 1일 (0) | 2023.10.31 |
2023년 10월 30일 mapToInt() (0) | 2023.10.30 |
2023년 10월 29일 (0) | 2023.10.30 |
2023년 10월 28일 (0) | 2023.10.30 |