먼저 강의를 완강했으나 인터페이스 부분외 이런저런 부분에서 확실하게 배워지지않았습니다.
반복해서 시청했는데도 잘 안되네요. 실전에서도 이렇게될까봐 걱정인데
이 강의의 내용을 안보고도 혹은 다른 자료를 참고하지 않을정도로 완벽하게 코드를 짤 수 있을정도로 다시 노력을 해야할지
단순히 하다가 기억이 안나면 자료를 찾는 방향으로 나아갈지 조언을 부탁드립니다.
먼저 강의를 완강했으나 인터페이스 부분외 이런저런 부분에서 확실하게 배워지지않았습니다.
반복해서 시청했는데도 잘 안되네요. 실전에서도 이렇게될까봐 걱정인데
이 강의의 내용을 안보고도 혹은 다른 자료를 참고하지 않을정도로 완벽하게 코드를 짤 수 있을정도로 다시 노력을 해야할지
단순히 하다가 기억이 안나면 자료를 찾는 방향으로 나아갈지 조언을 부탁드립니다.
안녕하세요?
먼저 긴 분량의 강의를 모두 학습하신 것을 진심으로 축하드립니다. 한 번 끝까지 완주하는 것 자체가 매우 어려운 일인데 멜리사J 님께서는 해내셨어요! 대단하십니다 🙌
질문주신 부분 저도 매우 공감합니다. 어쩌면 자바 공부를 하시는 많은 분들이 비슷한 고민을 하실 것 같아요. 강의 한 번 듣고 나서 객체 지향을 모두 이해하고 클래스, 인터페이스 등을 자유자재로 다룰 줄 아는 분은 아마도 없으리라 생각합니다.
저는 많은 코드를 직접 만들어 보면서 감을 익혀보시는 것을 권해드리고 싶어요. 가령 인터페이스를 설명드리기 위해 강의에서 사용한 예제는 강의 속에서는 유효할 수 있지만 이를 다른 문제에 응용한다는 것은 처음에는 막연하게 느껴질 수 있거든요.
우리가 수학 공부를 할때 새로운 개념을 익히고 나서 이 개념을 활용하는 예제 문제를 하나 풀었다고 해서 이 개념을 완벽히 숙지했다고 보기는 어렵습니다. 그래서 다양한 응용 문제를 풀어보고, 그 중에 틀리는 문제가 있다면 해설을 보면서 이런 경우에는 어떻게 풀어야 할지 새로운 접근법을 익히고 개념을 보완해 나가면서 점점 더 실력을 업그레이드 할 수 있지요.
프로그래밍도 비슷합니다. 어쩌면 제가 강의에서 든 예제가 멜리사J 님께 잘 맞지 않으실 수도 있을 것 같습니다. 그럴 때는 접근법을 조금 다르게 해서, 또는 보다 쉬운 난이도의 학습 자료를 통해 다른 각도에서 바라보시면 상대적으로 가볍게 개념을 이해하실 수도 있지 않을까 합니다.
구글링 또는 ChatGPT 를 이용하셔서 자료를 찾으시거나 생성해보시는 게 도움되실 거에요.
(ChatGPT 에게 물어본 예제)
질문 : 자바 인터페이스 개념을 이해하기 위한 쉬운 설명을 예제와 곁들여서 해줘
답변
👉 자바 인터페이스는 어떤 객체가 어떤 일을 할 수 있는지 정의하는 일종의 계약(contract)이라고 생각할 수 있어. 이 계약에는 어떤 메서드들이 있고, 그 메서드들이 하는 일이 무엇인지가 명시돼 있어. 그런데 그 메서드들이 어떻게 구현되는지는 인터페이스에서는 정의되지 않아. 대신에, 이 계약을 받아들이는 객체는 반드시 이 메서드들을 구현해야 해.
간단한 예제를 통해 설명해볼게. 예를 들어 동물들이 소리를 내는 기능을 가진 인터페이스가 있다고 상상해봐. 이 인터페이스는 '소리를 내는 기능'을 정의할 거야. 그런데 구체적인 동물은 각자 다른 소리를 내기 때문에 인터페이스에서는 각 동물이 어떤 소리를 내야 하는지는 정해주지 않아.
이제 각 동물들이 이 인터페이스를 구현한다고 상상해봐. 각 동물은 자신의 소리를 내는 방법에 따라서 이 인터페이스를 구현할 거야. 예를 들어, 개는 "멍멍"이라고 짖을 거고, 고양이는 "야옹"이라고 울거야.
그래서 코드로 보면 이렇게 될 거야:
여기서 주목할 점은
Sound
인터페이스를 구현하는Dog
클래스와Cat
클래스가 있고, 각각 자신의 방식대로makeSound()
메서드를 구현했다는 거야. 이렇게 하면Dog
와Cat
은 모두Sound
인터페이스를 따르면서도 각자의 독특한 소리를 낼 수 있게 되는거지.그리고 고민하시는 인터페이스는 개념을 익히시는 것이 무척 중요합니다. 사용법이야 나중에 개발을 하시면서 헷갈리는 부분에 대해 찾으셔도 되지만 왜 인터페이스를 사용해야 하는지, 어떤 경우에 사용하면 좋은지, 클래스와 인터페이스의 차이는 무엇인지에 대해서는 알고 계시는 것이 좋습니다.
먼저 앞서 설명드린 방법으로 학습을 해보시고 여전히 명확하지 않은 부분이 생긴다면 보다 구체적인 질문 내용을 알려주시면 제가 다른 방법으로 답변드릴 수 있도록 하겠습니다 😊
감사합니다.
답글
멜리사J
2024.04.20조언 감사합니다! 말씀하신대로 진행해보겠습니다!