질문 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이 아니어도 가능한 것입니다.
인스턴스화가 된 것 아닌가요? 를 확인해주세요!