🌱 오늘의 주제 : 04. 자바가 확장한 객체 지향 (1)
🌱 abstract 키워드 - 추상 메서드와 추상 클래스
- 추상 메서드는 선언부는 있는데, 구현부가 없는 메서드를 말한다.
- 추상 클래스는 인스턴스, 즉 객체를 만들 수 없다. new를 사용할 수 없다.
- 추상 메서드는 하위 클래스에게 메서드의 구현을 강제한다. 오버라이딩 강제.
- 추상 메서드를 포함하는 클래스는 반드시 추상 클래스여야 한다.
🌱 생성자
- 반환값이 없고 클래스명과 같은 이름을 가진 메서드를 객체를 생성하는 메서드라고 해서 객체 생성자 메서드라고 한다. 즉, 생성자이다.
- 개발자가 아무런 생성자도 만들지 않으면 자바는 인자가 없는 기본 생성자를 만들어 준다.
- 인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다.
🌱 클래스 생성 시의 실행 블록, static 블록
- static 블록에서 사용 할 수 있는 속성과 메서드는 static 멤버 뿐이다. 그 이유는, 객체 멤버는 클래스가 static 영역에 자리 잡은 후에 객체 생성자를 통해 힙에 생성되기 때문에, static 블록에서는 객체 멤버에 접근할 수 없는 것이다.
- 클래스 정보는 코드에서 맨 처음 사용될 때 T 메모리의 스태틱 영역에 로딩되며, 이때 단 한번 해당 클래스의 static 블록이 실행된다.
- 클래스가 제일 처음 사용될 때는 세가지 경우 하나 이다.
- 클래스의 정적 속성을 사용할 때
- 클래스의 정적 메서드를 사용할 때
- 클래스의 인스턴스를 최초로 만들 때
- 프로그램이 실행될 때 바로 클래스들의 정보를 T 메모리의 static 영역에 로딩하지 않고, 해당 클래스가 처음 사용될 때 로딩될까?
- static 영역도 메모리이기 때문에, 최대한 늦게 로딩함으로써 메모리 사용을 최대한 늦추기 위해서이다.
🌱 final 키워드
- final은 마지막, 최종이라는 뜻이다.
- final 키워드가 나타날 수 있는 곳은 클래스, 변수, 메서드이다.
- final 의미는 상속을 허락하지 않겠다는 의미이다.
- final 변수는 변경 불가능한 상수가 된다는 의미이다.
final static int 정적상수
final int 객체상수
- final 메서드는 재정의, 즉 오버라이딩을 금지하는 의미이다.
🌱 느낀점
이번 챕터에서 가장 헷갈렸던 부분은, 클래스 생성 시의 실행 블록, static 블록 이였다. 클래스가 코드에서 맨 처음 사용 될 때는 T 메모리의 스태틱 영역에 로딩 되고, 단 한번 static 블록이 실행된다는 부분을 처음 알게 되었다. 또한 클래스가 처음 사용될 때는 정적 속성을 사용할 때, 정적 메서드가 사용될 때, 인스턴스를 최초로 만들 때라고 한 부분도 알게 되어 인상 깊었다. 조금 더 나무가 아닌, 숲을 볼 수 있는 눈을 길러준? 부분에서 저자에게 감사하다 :)
'Spring > Book - 스프링 입문을 위한 자바 객체 지향의 원리와 이해' 카테고리의 다른 글
05. 객체 지향 설계 5원칙 - SOLID (0) | 2023.03.31 |
---|---|
04. 자바가 확장한 객체 지향 (2) (0) | 2023.03.24 |
03. 다형성: 사용편의성 (0) | 2023.03.16 |
03. 자바와 객체 지향(2) (0) | 2023.01.27 |
03. 자바와 객체 지향 (1) (0) | 2023.01.17 |