작성한 질문수
김영한의 실전 자바 - 기본편
작성
·
275
0
User 클래스를 만들었고 ShoppingCart2에서 User클래스를 활용하기 위해서 user1이라는 인스턴스를 생성하였습니다.
그리고 User클래스에 있는 메서드를 활용하기 위해서 user1.을 하니 메서드가 나타나지 않았습니다.
그 이유가 무엇때문인지 알 수 있을까요?
(메인 메서드에서는 정상적으로 나타났습니다)
답변 2
2
안녕하세요. 옙버디님, 공식 서포터즈 OMG입니다.
제가 이해한 질문의 내용은 다음과 같이 ShoppingCart클래스의 필드 영역에서 OMG라는 User 인스턴스를 생성 후 필드 영역에서 함수를 호출하였을 때 메서드 참조가 안되는 것을 얘기하시는 것으로 이해하였습니다.
테스트 하신것과 같이 필드 영역에서는 메서드 호출이 불가능합니다.
하지만 5번째 줄과 같이 User()인스턴스를 생성 후 즉시 호출하여 변수를 초기화 하는 경우에는 가능합니다.
제가 이해한 내용이 아닌 경우 부연 설명 부탁드립니다 😀
감사합니다.
현재까지 영한님의 강의를 들은 것으로 생각해보자면 클래스는 메서드 영역이고 인스턴스 생성은 메인 메서드가 인스턴스 생성을 호출해야 하기 때문에 가능한것 이라고 저는 일단 결론을 지었는데
해당 부분에서 오류가 있을까요???
제가 작성한 예시 기준으로 답변드리면 이 부분은 메모리 관점보다는 자바 언어의 문법 규칙에 따른 것입니다.
자바에서는 메서드 호출이 메서드, 생성자 또는 초기화 블록 외부의 클래스 수준에서 허용되지 않습니다.
OMG.myName();이 메서드 내부가 아닌 클래스 수준에서 호출되고 있기 때문에 컴파일 시간 오류가 발생한 것입니다.
OMG.myName();
안녕하세요. 옙버디님, 공식 서포터즈 코즈위버입니다.
도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.
실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
https://bit.ly/3fX6ygx
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 문제 영역을 실행할 수 있는 방법
2. 문제가 어떻게 나타나는지에 대한 상세한 설명
링크: 공식 서포터즈
링크: 자주하는 질문
현재까지 영한님의 강의를 들은 것으로 생각해보자면 클래스는 메서드 영역이고 인스턴스 생성은 메인 메서드가 인스턴스 생성을 호출해야 하기 때문에 가능한것 이라고 저는 일단 결론을 지었는데
해당 부분에서 오류가 있을까요???