작성
·
519
0
안녕하세요 선생님🙇♀️
클래스_메소드 강의를 보다 궁금한 점이 생겨 질문 남깁니다.
BlockBox 클래스에 두 메소드를 넣었고, 04_Method클래스에 두 메소드를 활용한 문장이 있었는데요.
insertMemoryCard()는 그대로 사용했지만, getVideoFileCount()는 다시 변수로 선언한 이유가 무엇인가요?
감사합니다.
void inserMemoryCard(int capacity) {
System.out.println("메모리 카드가 삽입되었습니다.");
System.out.println("용량은 " + capacity + "GB 입니다.");
}
void getVideoFileCount(int type) {
if ( type == 1) {
return 9;
}
else if ( type == 2) {
return 1;
}
return 10;
}
b1.insertMemoryCard(256);
int fileCount = b1.getVideoFileCount(1);
답변 4
2
안녕하세요?
작성하신 코드에 실수가 있습니다. getVideoFileCount() 메소드의 반환형은 void 가 아닌 int 로 적어주셔야 합니다.
int getVideoFileCount(int type) { // void 대신 int 로 적어주세요
if (type == 1) {
return 9;
}
else if (type == 2) {
return 1;
}
return 10;
}
다른 분께서 설명하셨듯이 반환값이 존재하는 메소드의 경우 보통은 메소드를 호출하는 쪽에서 반환값을 받아서 계속 사용을 합니다. 그렇기 때문에 반환값이 없는 insertMemoryCard() 메소드는 앞에 변수를 선언하지 않았고, 정수형 값을 반환하는 getVideoFileCount() 메소드는 앞에 변수를 선언하였습니다.
b1.insertMemoryCard(256);
int fileCount = b1.getVideoFileCount(1);
메소드 내에서 수행된 동작의 결과를 반환받아서 계속 사용하기 위해서는 이렇게 해주셔야 합니다.
가령, 어떤 식당에서 이벤트를 한다고 해보겠습니다. 이벤트 내용은 손님이 식사를 하고 나서 영수증에 연락처를 기입해서 응모함에 넣으면 추첨을 통해 식사권을 주는 것인데요. 이벤트에 참여를 원한다면 영수증이 필요하므로 계산을 한 뒤에 영수증을 반환받아야 합니다. 그래야 연락처를 기입하고 응모함에 넣을 수 있게 되는거죠.
하지만 잠깐 대한민국에 여행을 온 외국인 관광객 손님이라면 아마 식사권은 필요가 없을 겁니다. 추첨을 하기도 전에 귀국할 수도 있을테니까요. 이 경우라면 식당 사장님이 "영수증 드릴까요?" 라고 물어보더라도 필요가 없으므로 "버려주세요" 라고 할 수도 있을 겁니다.
즉, 반환값이 있는 메소드임에도 불구하고 반환값을 사용하지 않아도 되는 경우라면 굳이 새로운 변수로 그 값을 받을 이유가 없는거죠. 하지만 식당을 자주 방문하는 손님이라면 반드시 새로운 변수로 그 값(영수증)을 받아서 사용할 것입니다.
궁금증 해결에 도움되었으면 좋겠습니다 😊
감사합니다.
1
1
System.out.println("일반 영상 파일 수 : " + b1.getVideoFileCount(1) + "개");
이렇게 작성하시면 다시 변수로 선언하지 않으셔도 되는데, 다시 변수를 선언해서 사용하는게 가독성에 좋다보니, 선생님께서 변수로 선언하신것같습니다.
좋은 예제 너무나 감사드립니다 😊 실무에서는 작성해주신 것처럼 사용하곤 하지만, 배우는 단계에서는 구분 동작(?) 처럼 코드를 분리해서 적는게 보다 쉽게 이해하실 것 같아서 변수로 선언을 했답니다.
0
답글 달아주신 모든 분들께 감사드립니다🙇♀️
반환값이 필요해서 변수를 다시 선언한거군요!
선생님의 좋은 예시도 감사합니다.
항상 예시로 설명해주셔서 빠르게 이해할 수 있는 것 같습니다.
정말 감사드립니다!
좋은 답변 너무나 감사드립니다 😊 핵심만 콕 잘 찝어주셨네요 👏👏👏