주말인데 답변 항상 감사합니다. 정말 많은 도움이 되고 있습니다. 다른 블로그 예제로 인터페이스 공부 중 의문이 생겨 질문합니다. 블로그에 질문을 남기려고 했지만 더이상 운영을 안하는 듯해서 여기에 남기네요... 프로그램이 필요이상으로 복잡합니다 ㅠㅠ 프로그램은 인터페이스를 사용해서 학생의 나이를 입력하고 단순히 다시 출력하는 프로그램입니다. Q. 궁금한 부분은 현재 Student 클래스 내에 인터페이스를 설정했는데 인터페이스도 하나의 추상클래스로 인식한다고 알고 있는데 괜찮나요? Q. 인터페이스를 정작 시행하는 프로그램은 main함수에 있는데 그렇다고 main이 implements로 시행하지는 않고 있습니다. 그렇다면 이 인터페이스는 누가 시행하는 건지 궁금합니다. Q. import로 Student 클래스 안의 인터페이스를 끌어쓰는데 이 프로그램의 용도는 무엇인가요? 정작 지우면 오류가 발생합니다. ``` import test.Student.InputAgeListener; class Student { public static final int ERRORCODE_OK = 0; public static final int ERRORCODE_EXCEPTION = 1; private String m_Age; public interface InputAgeListener{ public void onResult(String m_Age); } private InputAgeListener m_Listener; public void setAge() { byte[] buffer = new byte[20]; try { System.in.read(buffer); m_Age = new String(buffer); m_Listener.onResult(m_Age); } catch(Exception e) { e.printStackTrace(); } } public void SetOnListener(InputAgeListener _listener) { m_Listener = _listener; } } public class Example { public static void main(String[] args) { Student student = new Student(); student.SetOnListener(new InputAgeListener() { public void onResult(String _Age) { System.out.println("학생이 나이는" + _Age); } }); student.setAge(); } } ```
## Q1: Student 클래스 내 인터페이스 설정 괜찮나요? 프로그램 동작에는 문제가 없으나, 좋은 코드는 아닙니다. ## Q2: main이 implements로 시행하지는 않고 있습니다. 이 인터페이스는 누가 시행하나요? student 객체가 setAge() 메소드를 호출할 때, 내부적으로 `m_Listener`를 통해 해당 인터페이스를 사용합니다. `익명 인터페이스`에 대해 조사해보세요. ## Q3: import로 Student 클래스 안의 인터페이스를 끌어쓰는데 이 프로그램의 용도는 무엇인가요? 저도 잘 모르겠습니다. 의도를 파악하기 힘든 코드입니다. ## 관련 강의 자료 + 자바 인터페이스 (https://cloudstudying.kr/lectures/267) ## PS. 하나의 개념을 다양한 코드를 통해 확인하는 과정은 중요합니다. 다만, 좋지 않은 예를 통해 개념의 본질이 흐려지지 않게 조심하길 바랍니다. :(