명품 java programming라는 책으로 2번째 자바 공부를 시작했다. 백엔드에 들어가기 앞서 객체지향 언어에 대해 제대로 알아보는 시간이 되기를 바란다.
오늘은 4장 클래스와 객체에 처음 진입했고, 172 - 185 페이지 까지 읽었다. 인텔리제이 설정과 한가지 질문에 매달리느라 시간이 오버되었다.
객체의 가장 본질적인 특징인 캡슐화를 공부하면서 얻은 고찰은 다음과 같다. 나는 평소 코드를 짤 때 클래스(껍질)을 짜고 멤버(필드 + 메소드)를 작성했고, 이것은 캡슐화의 취지에 맞지 않다고 생각했다. 세상과 연결하면서도 단절시키는 클래스라는 껍질보다는 그 속을 구성하는 멤버를 먼저 하고 이후에 상속과 다형화를 고려하여 클래스로 감싸는데 맞지 않을까 생각한다.
다음의 코드에서 클래스내부에 메인 함수에서, 본인이 속한 클래스로 인스턴스(객체)를 만드는 것에서 뭔가 기괴함을 느꼈다. 그렇다면 new Circle()
로 클래스의 멤버들을 메모리에 로드할 때 main도 메소드 중 하나니까 다시 한번 로드를 하는 것인가?
@dohelee 님께서 다음의 링크들을 알려주셨다.
https://m.blog.naver.com/heartflow89/220954420688
https://nowonbun.tistory.com/303
링크는 메소드가 아닌 필드(변수)들에 대해서만 다룬다. 다만 static이 붙은 변수들을 stack에 저장된다고 하니 만약 메소드가 변수 취급을 받는다면 컴파일 전에 스택에 올라가서 객체 생성할때도 메모리에 다시 로드 안되는게 아닐까?