객체지향 공부를 위해서 극락님이 내주신 과제를 하던 중, 달린 코멘트다
오... 내가 모르는 것만 정확하게 집으셨는데...
역시는 역신가... 섭섭한데요... (?)
아무튼! 더욱더 OOP스러운 코드를 구현하기 위해 위의 개념들을 꼬옥 잡고 넘어가려고 한다!
1. 생성자가 하는 일은 무엇일까요?
- 외부에서 클래스를 사용하기 위해 생성하는 인스턴스를 초기화하는 역할
- 생성자를 통해서 인스턴스 변수를 초기화한다
- (인스턴스 변수에 대한 값을 할당한다)
- 생성자를 통해서 인스턴스를 생성하면, 인스턴스 변수는 Heap 메모리 영역에 형성되고 이를 호출하여 사용할 수 있는 상태가 된다
- 생성자를 실행시키지 않고는 클래스로부터 객체를 만들 수 없다
- new 연산자에 의해 생성자가 성공적으로 실행되면, 힙 영역에 객체가 생성되고 객체의 주소가 반환된다
- 반환된 객체의 주소는 클래스 타입 변수에 저장되어 객체에 접근할 때 사용된다
참고) 자바의 메모리 로딩 순서 및 위치
https://blog.naver.com/yhs86/221782890112
자바 프로그램 code의 메모리 로딩 순서 및 기억 위치(각종 변수 및 메서드, 객체(인스턴스))
JAVA Code를 작성했을 때, 정확히 어떤 단계로 메모리로 로딩되고 값은 어디에 위치해 있는지를 이해...
blog.naver.com
2. 메서드가 하는 일은 무엇일까요?
- 객체의 동작
- 메소드는 필드를 읽고 수행하는 역할도 하지만, 다른 객체를 생성해서 다양한 기능을 수행하기도 한다
- 메소드는 객체 간의 데이터 전달 수단으로 사용된다
- 외부로부터 매개변수를 받을 수도 있고, 실행 후 값을 반환할 수도 있다
3. Lombok의 동작 과정 (롬복이 언제 코드를 만들까?)
- Lombok은 간단하게 컴파일 시점에서 바이트 코드를 변환하여 원하는 부분을 주입해주는 방식으로 동작한다
♻ 롬복의 동작 과정
- 자바 컴파일러는 소스파일을 파싱하여 AST 트리를 만든다
- Lombok은 Annotation Processor를 따라 AST 트리를 동적으로 수정하고 새 노드를 추가한다
- 그 후 Lombok은 바이트 코드를 분석 및 생성한다
- 최종적으로 자바 컴파일러는 Lombok Annotation Processor에 의해 수정된 AST를 기반으로 Byte Code를 생성한다
🖐 Annotation Processor
- 자바 컴파일러 플러그인의 일종으로, 어노테이션에 대한 코드베이스를 검사/수정/생성하는 훅(Hook)이다
- 컴파일 에러 혹은 컴파일 경고를 만들어내거나, 소스코드(.java)와 바이트코드(.class)를 내보내기도 한다
- 즉, Annotation을 사용하려면 Annotation Processor가 필요하다
Annotation Processor의 동작 구조
- 어노테이션 프로세서를 사용한다는 것을 자바 컴파일러가 알고 있는 상태에서 컴파일을 수행한다
- 어노테이션 프로세서들이 각자의 역할에 맞게 구현되어 있는 상태에서 실행되지 않은 어노테이션 프로세서를 실행한다
- 어노테이션 프로세서 내부에서 어노테이션에 대한 처리를 한다
- 자바 컴파일러가 모든 어노테이션 프로세서가 실행되었는지 검사하고, 모든 어노테이션 프로세서가 실행되지 않았다면 반복한다
참고)
https://kephilab.tistory.com/47
4. Java 자바 - 클래스의 구성 멤버 [ 생성자 ]
생성자 new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 객체 초기화 : 필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 하는 것
kephilab.tistory.com
https://kephilab.tistory.com/48
5. Java 자바 - 클래스의 구성 멤버 [ 메소드 ]
메소드 객체의 동작에 해당하는 중괄호 { } 블록을 말한다. 메소드를 호출하게 되면 중괄호 블록에 있는 코드들이 일괄적으로 수행된다. 메소드는 필드를 읽고 수행하는 역할도 하지만, 다른 객
kephilab.tistory.com
https://velog.io/@papakang22/JavaLombok%EC%9D%98-%EB%8F%99%EC%9E%91%EA%B3%BC%EC%A0%95
[Java]Lombok의 동작과정
Lombok은 편리함으로 인해 저도 많이쓰고 실무에서도 많이쓰이는 기술중 하나입니다.최근 면접 과제에서 Lombok을 사용하여 로직을 작성했는데 정작 Lombok의 동작과정에 대해 답변하지 못해서동작
velog.io
'야미로깅' 카테고리의 다른 글
Swagger와 Spring rest docs, 두마리 토끼 잡기!🐰 (0) | 2023.02.22 |
---|---|
[AWS] 도메인 HTTPS 설정 삽질 기록🪓 (0) | 2022.08.26 |
[Git] 강제 Pull을 받는 방법 (0) | 2022.05.01 |
[Git] 로컬에서 원격 브랜치 삭제하기 (0) | 2022.02.07 |
[Github] Pull Request 방법 (0) | 2021.12.22 |
댓글