//////
Search

[추가 질문 답변 완] Non-static method cannot be referenced

질문 상태
답변 완료
수업일자
2022/10/05
분류
오류

질문 1

Non-static method cannot be referenced from a static context 라는 에러가 뜨는 이유를 모르겟습니다.
Class Lion
Class Main

답변 1

Lion 클래스 안에 getStudentList() 메서드에 static 키워드가 붙지 않은 경우 static 메서드인 main()안에서 호출할 수 없습니다.
호출을 하려면 Lion 클래스를 second처럼 인스턴스화 한 후에 호출하셔야 합니다! static에 대한 자세한 답변은 답변완료 UserDao에서 plus가 빨간색 나오는 이유가 궁금합니다를 참고해주세요!

인스턴스화가 이미 된 것이 아닌가요? 에 대한 답변

Lion 클래스는 second라는 변수명으로 인스턴스화가 되어있습니다.
List<String> students = Lion.getStudentList(); 에서 굵은 글씨는 Lion 클래스에서 getStudentList()라는 메소드를 바로 참조하고 있는 상태입니다. 즉 인스턴스로 참조를 한 것이 아니기 때문에 static 메서드가 아닌 get~List() 메서드는 메모리에 올라가지 못하는 상황인 것입니다!

질문 2

다른 분들이 쓰신 코드를 돌려봤는데.getStudentList()를 static으로 설정하지 않으셨는데 오류가 나지 않았습니다. 이건 왜 그런 건지 궁금합니다.

답변 2

main method 안 첫 줄에서 LikeLion2th likeLion2th = new LikeLion2th(); ← 인스턴스화를 했습니다. 두번째 줄에서 likeLion2th(LikeLion2th 인스턴스화)을 통해 getStudentList()를 호출했습니다. 그러므로 static이 아니어도 가능한 것입니다.
인스턴스화가 된 것 아닌가요? 를 확인해주세요!