관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

상속 1 - 상속에 대한 개념 학습 및 상속을 활용한 마우스 만들기 프로젝트 1 본문

프로그래밍 언어/자바

상속 1 - 상속에 대한 개념 학습 및 상속을 활용한 마우스 만들기 프로젝트 1

huenuri 2024. 11. 30. 18:53

점심에 카레 요리를 했는데 깜박 잊고 밥을 하지 않았다. 정말 배가 너무 고프지만 밖에 나가 햇반을 사기보다 30분만 더 기다리기로 했다. 기다리는 동안 자바 수업을 듣고 공부를 조금 해볼 생각이다.

자바 공부도 지난 8월 중순에 하고 그 이후로 하지 않았으니 3달이 넘게 지났다. 감이 많이 떨어졌을 수도 있지만 그동안 프로그래밍 공부를 계속 해왔으니 JSP처럼 자바도 금방 회복할 수 있을 것 같다.

 

먼저 상속에 대한 수업을 듣고 나서 책으로 돌아와 더욱 깊이 있는 학습을 해볼 것이다.


 

 

 

 

 

상속에 대한 개념 학습

 

 

 

 

 

 

상속은 부모로부터 물려받는 것이다. 기존에 있던 것을 버리는 건 낭비이므로 추가적인 기능만 구현하는 것을 말한다. 

 

 

 

 

 

 

네 발 자전거를 만들고 싶으면 뒤에 보조바퀴만 2개 더 달면 된다.

 

 

 

 

 

 

 

 

 

 

 

 

스크롤을 할 수 있는 휠 마우스를 만드는 실습을 진행해볼 것이다. 스크롤과 왼쪽, 오른쪽 버튼 클릭 기능을 남겨두고 인체 공학 마우스도 만들어본다. 그러면 기존에 갖고 있는 볼 마우스에서 상속을 받아야 한다. 이 볼 마우스에는 좌클릭, 우클릭, 마우스를 움직이는 기능만 갖고 있다. 

 

 

 

 

 

 

물려주는 클래스는 부모 클래스, 물려받는 클래스는 자식 클래스라고 한다. 화살표 방향이 부모에서 자식일 것 같지만 자식에서 부모로 이어진다.

 

 

 

 

 

 

그 이유는 컴파일러가 데이터를 찾아가는 과정 방향 때문이다. 이것은 매우 중요하다. 

 

 

 

 


 

 

 

 

 

 

마우스 만들기 프로젝트

 

1. 세 개의 마우스 클래스과 Main 클래스 만들기

Ball, Wheel, Health라는 이름으로 마우스 클래스를 만들고, Main 클래스에는 main 체크를 한 후 만들어준다.

 

 

 


 

 

 

 

 

 

 

클래스는 이렇게 구성되어 있다.


 

 

 

 

2. BallMouse 클래스 만들기

BallMouse에 3가지 기능을 넣어 메서드를 추가해 준다.

 

 

이제 이 기능을 메인에서 사용해 볼 것이다.


 

 

 

 

 

3. Main에서 BallMouse 기능 가져오기

객체 생성해서 BallMouse의 3가지 기능을 가져온다.

 

 

객체 생성을 하면 이 메서드를 가져다가 사용할 수 있다. 그리고 BallMouse도 콘솔창에 출력해 보자.

 

 

이클립스의 테마와 콘솔창 색깔도 내 마음에 들도록 바꾸어주었다. 이번에는 WheelMouse를 만들어보겠다.


 

 

 

 

 

4. WheelMouse 만들기

휠 마우스에는 3가지 기본 기능에 스크롤하는 기능을 추가해 준다.

 

 

이제 휠 마우스가 제대로 작동되는지 확인하기 위해 메인에서 객체 생성을 해줄 것이다.


 

 

 

 

 

5. Main에서 WheelMouse 기능 가져오기

 

아무리 봐도 문제를 모르겠는데 빨간 줄이 뜨며 오류가 뜨는 이유를 모르겠다. 이 문제를 가지고 30분을 넘게 고민했는데 드디어 찾았다. 메인 중괄호 밖에 써서 그런 거였다. 혹시나 다른 것 때문인가 해서 WheelMouse의 메서드 위치를 바꾸기도 했었는데 그건 아닌 것 같다.

 

 

 

 

이제 작성이 잘 되었다. 콘솔 창으로 출력해 보면 다음과 같다.

 

 

 

출력도 잘 되고 있다. 근데 코드를 잘 살펴보면 이미 구현되어 있는 것을 똑같이 쓰니 중복되는 부분이 많다.

 

 

이러한 부분을 부모 클래스로 상속을 받으면 더 간단하게 작성할 수 있다.


 

 

 

 

6. 중복되는 부분 부모 클래스로부터 상속받기

우클릭, 좌클릭, 드래그하는 기능을 BallMouse 클래스에서 상속받도록 한다.

 


 

 

 

 

7. 상속이 이루어지는 방향 파악하기

원래 WheelMouse는 스크롤을 하는 기능만 있었지만 extends를 함으로 기능이 확장되었다. 

 

 

 

 

 

 

 

 

mouse2는 WheelMouse로 객체 생성이 되어 있다. 처음에 컴파일러는 WheelMouse를 찾다가 없으면 extends 키워드를 찾아 BallMouse로 이동하게 된다. 그 안에 찾아가 보면 left, right, drag 기능이 있다는 걸 알게 된다.

 

 

 

이렇게 상속의 방향은 자식에서 먼저 찾고 부모를 찾는 구조로 이루어져 있다.


 

 

 

 

8. 상속에 대한 정리

 


 

 

 

 

 

학습을 마치고

오랜만에 자바 수업을 듣고 공부하려니 집중이 잘 되지 않고 하기 싫은 마음이 좀 컸다. 원래 첫 수업은 이렇게 힘이 드는 편이다. 어제 JSP 공부할 때도 2시간은 좀 헤매며 적응하는 시간이 필요했다.

이번 시간도 그러했다. 이클립스를 켜고 자바를 어떻게 썼는지도 잊어버린 데다 단축키도 익숙하지 않았다. 코드를 치는 것도 정말 귀찮았고 저녁 무렵이 되니 피곤하기도 했다.

 

잠시 눈 찜질을 하며 눈을 휴식하며 다시 공부를 마무리해 본다. 그리고 아까보다는 할만해짐을 느낄 수 있었다.