어제 수업 복습 마무리
내부클래스
먼저 어제 하던 Map.Entry부터 이해하고 넘어가보자
스태틱 내부 클래스는 이제 것 보지 못한 신기한 존재인 것같다. 클래스가 스태틱이 되면서 외부클래스는 내부에서 객체를 생성해서 접근해야되고... 내부클래스인데 클래스명으로 접근이 가능하고..그냥 내부에 있지만 독립된 클래스라고 생각해도 될 것 같다
로컬 내부클래스의 멤버변수가 생성될 수 없다는 것 까진 알겠는데 그럼 멤버 메서드는 어떻게 생성될 수 있는 걸까?
이렇게 질문하고 나니 또 멤버변수는 힙영역에 있는데 왜 접근이 안될까 고민이 되기도 한다..
상수는 생명주기가 없고 코드영역에 상수풀에 계속 존재하게 된다
여기서 메모리 구조에 대해 보충 공부가 필요한 시점이되서 인터넷을 통해 여러 레퍼런스를 찾아보았다
강사님께 질문한 결과 내가 착각하고 있었음을 알 수 있었다. 내부 클래스는 멤버변수와 멤버 메서드를 생성할 수 있고 정적메서드와 정적변수를 생성할 수 없었던 것이다
- 익명 내부클래스를 3단계로 구현해주셨는데 들을 때는 이해가 잘갔는데 다시보니 잘모르겠다.. 강의를 다시들어야겟다
- 다시듣고 람다식까지 포함한 예제를 정리하고 또 따로 연습삼아 구현해보니 어느정도 이해가 갔다
- 평소에 외부클래스의 객체를 생성하던것을 내부클래스 만들어서 객체를 사용하고 그것도 생략해서 메서드내에서 객체를 생성해서 구현하고 그것도 생략해서 람다식 형태로 객체생성을 생략하고 메서드 내부구현만 하는것이었다
- 강사님도 말씀하셨지만 객체지향적인게 아닌 함수형프로그래밍을 지향하기 때문에 낯설수밖에 없지만 잘받아들여봐야겠다
- 결론이 될 만한 말인지 모르겠지만 강사님게서 로컬내부 클래스가 스특에 정의된다는 말을 잘못설명한거고 정정하신다고하셨다.. 근데 클래스의 정의가 스택과 함께한다는 말이 무슨뜻인지 모르겠다
- 프리코스를 빠르게 다시들어봤는데 컴파일에서 생성되는 파일 확인하는것 말고는 다른건 못찾아서 더 리서치가 필요한 부분같다
- 구글에서 리서치하기!!