일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 머신러닝
- 중학1-1
- 중학수학
- 데이터베이스
- JSP
- 순환신경망
- 데이터분석
- 자바스크립트
- 혼공머신
- JSP/Servlet
- c언어
- 자바
- 정보처리기사실기
- CSS
- 연습문제
- 컴퓨터구조
- 자바스크립트심화
- JDBC
- html/css
- SQL
- 컴퓨터비전
- rnn
- 상속
- 자바 실습
- 오블완
- 파이썬
- 정보처리기사필기
- 딥러닝
- 티스토리챌린지
- 디버깅
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
상속 3 - 동물 계층 구조 만들기 실습 1 : 상속과 오버라이딩 활용하기 본문
오늘도 새벽 2시에 일어나 공부를 시작해 본다. 10분 정도는 어제 학습 시간을 기록하며 이제 어제에 이어 상속 공부를 시작해보려고 한다. 상속 수업도 2시간 반 정도만 더 들으면 끝날 것 같다. 그러면 이제 책으로 돌아와서 학습해 볼 것이다.
상속을 활용한 동물 프로젝트 실습 해보기
1. 동물 패키지 만들고 어떤 기능을 구현할지 구상하기
동물에는 어떤 종류가 있을지 생각해보니 조류, 포유류, 파충류가 있다. 이들을 이름별로 분류하고 공통적인 기능과 각각이 할 수 있는 기능을 생각해 본다.
종 안에 동물의 종류도 한두 가지 넣는데, 먼저 새에는 펭귄과 독수리가 있다. 만약 독수가에게 밥 먹기라는 기능을 상속받으려면 Bird에서 Animal까지 찾아 올라가야 한다.
2. 계층 구조에 따라 클래스 만들기
앞서 설계한 내용을 바탕으로 7개의 클래스를 만든다.
다 만들고 나면 이와 같은 구조가 된다.
3. Animal 클래스 만들기
가장 상위 계층인 Animal부터 구조를 만든다.
4. Bird 클래스 만들기
주요 기능은 Animal 클래스에서 상속받도록 하고 알을 낳는다는 기능을 추가한다. 그리고 새에서는 move를 난다로 바꾸어 주어야 한다.
마지막 부분은 나중에 구현해 줄 것이다.
5. Penguin 클래스 만들기
기본적인 기능 4가지에 배치 기능을 추가한다. 펭귄의 주요 기능은 Animal이 아닌 Bird에서 상속받도록 한다. 왜냐하면 Bird에는 알을 낳는다는 기능이 있기 때문이다.
그리고 각각의 동물별로 기능은 추상화되어야 한다. Animal에서 움직인다는 Bird에서는 난다로, Whale에서는 헤엄치다로 바뀐다. 즉 고유한 기능은 물려받지만 표현은 다르게 만들어야 하는 것이다. 이것이 메서드의 특징 중의 하나인 오버라이드이다.
6. Bird 클래스에서 오버라이딩하기
오버라이딩은 클래스 간의 상속 관계에서 가능하다. Bird 클래스의 move를 움직인다가 아닌 난다로 재정의한다. 이때 어노테이션으로 정의해주어야 한다. 만약 이를 쓰지 않을 경우 함께 일하는 다른 개발자가 이를 파악하지 못하고 이름을 변경할 수도 있기 때문이다.
어노테이션은 달지 않아도 큰 문제는 없지만 개발자들끼리의 약속이다.
Bird에서 오버라이딩으로 상속받는 메서드의 개수를 알고 싶다면 다음과 같은 Alt + Shit + S를 눌러 Override Methode를 클릭한다.
Bird 클래스가 실제로 상속받고 있는 부모 클래스를 볼 수 있다. 현재는 move를 오버라이딩했기 때문에 2개만 나오며 오버라이딩도 자동 완성으로 만들 수 있다.
기존의 오버라이딩을 삭제하니 이렇게 3개가 떴다.
이렇게 오버라이딩을 할 수 있는 기능이 생겼고 다시 출력문을 작성해 주었다.
7. 오버로딩과 오버라이딩의 차이점 이해하기
8. Penguin 클래스 오버라이딩하기
펭귄에는 난다가 아닌 헤엄치다로 오버라이딩한다.
9. Eagle 클래스 만들기
Eagle에는 고유한 기능이 없고 모두 Bird에서 상속받으니 이렇게만 써주면 된다.
10. Mammal 클래스 만들기
Mammal은 Animal에서 움직이다를 그대로 상속받을 수 있도록 오버라이딩을 하지 않을 것이다. Mammal이 할 수 있는 고유한 기능으로 새끼를 낳는다가 있다.
처음에는 상속을 하지 않아서 오버라이딩할 때 다른 클래스에서 Animal 클래스가 보이지 않았다.
11. Whale 클래스 만들기
움직인다를 헤엄치다로 오버라이딩만 진행하면 된다.
조금 전에는 Animal이 나타나지 않았는데 상속을 받도록 설정했더니 이제 나타난다. Whale은 Mammal을 상속받고 있어 이 부분이 보이고 있지만, Mammal은 Animal을 상속받고 있어 이것도 뜨고 있다.
우리는 이 중에서 move를 오버라이딩할 것이다.
학습을 마치고
이 내용은 오늘 1시간 반 가까이 수업을 들으며 정리했던 내용이다. 아직 동물 클래스를 만드는 작업이 더 진행되어야 하지만 우선 계층 구조를 파악하며 상속으로 클래스를 만들고 오버라이딩을 하는 것까지 진행해 보았다.
오버로딩과 오버라이딩의 차이점을 알 수 있었고 오버라이딩을 어떻게 하는지 완전히 이해했다. 전에 5달 반 전에 이 수업을 들었을 때는 거의 하나도 이해하지 못했다. 사실 자바를 배운 지 며칠 되지 않아서 이 개념을 이해하는 건 불가능에 가까웠다.
'프로그래밍 언어 > 자바' 카테고리의 다른 글
상속 5 - 동물 계층 구조 만들기 실습 3 : 추상 클래스 사용하기 (0) | 2024.12.01 |
---|---|
상속 4 - 동물 계층 구조 만들기 실습 2 : 업 캐스팅과 다운 캐스팅에 대하여 (0) | 2024.12.01 |
상속 2 - 상속의 특징과 상속을 활용한 마우스 만들기 프로젝트 2 (0) | 2024.11.30 |
상속 1 - 상속에 대한 개념 학습 및 상속을 활용한 마우스 만들기 프로젝트 1 (0) | 2024.11.30 |
객체와 클래스 22 - 단원 마무리 연습문제 실습편 : 10~12번 (0) | 2024.08.20 |