JAVA - final 키워드
간단한 내용이지만, final 키워드가 클래스, 메소드, 변수 앞에 붙었을 때 각각의 의미에 대해서 정확히 정리하려 한다.
- final class
- 다른 클래스가 상속받지 못한다.
- final method
- 자식 클래스에서 상위 클래스의 final method를 오버라이드 하지 못한다.
- final variable
- 변하지 않는 상수 값이 되어 새롭게 값을 할당할 수 없는 변수가 된다.
non-static 멤버와 static 멤버의 차이
- non-static 멤버
- 공간적 특성 : 해당 멤버는 객체마다 별도로 존재한다.
- 인스턴스 멤버라고 부른다.
- 시간적 특성 : 객체 생성 시에 멤버가 생성된다.
- 객체가 생성될 때, 멤버가 생성되므로 객체 생성 후에 멤버 사용이 가능.
- 객체가 사라지면 해당 멤버도 사라진다.
- 공유의 특성 : 공유되지 않는다.
- 멤버는 객체 내에 각각 독립된 공간을 유지하므로 공유되지 않는다.
- 공간적 특성 : 해당 멤버는 객체마다 별도로 존재한다.
- static 멤버
- 공간적 특성 : 해당 멤버는 클래스 당 하나만 생성된다.
- 해당 멤버는 객체 내부가 아닌 별도의 공간에 생성된다.
- 클래스 멤버라고 부른다.
- 시간적 특성 : 클래스 로딩 시에 멤버가 생성된다.
- 객체가 생성되기 전에 이미 생성되므로 객체를 생성하지 않고도 사용 가능.
- 객체가 사라져도 해당 멤버가 사라지지 않는다.
- 해당 멤버는 프로그램이 종료될 때, 사라진다.
- 공유의 특성 : 동일한 클래스의 모든 객체들에 의해 공유된다. (하나의 클래스로부터 생성된 여러 객체가 공유한다.)
- 공간적 특성 : 해당 멤버는 클래스 당 하나만 생성된다.
'CS 공부 > Java, Spring (재정리)' 카테고리의 다른 글
String, StringBuffer, StringBuilder (0) | 2021.04.11 |
---|---|
Java의 메모리 구조 (0) | 2021.04.11 |
자바 프로그램의 실행, 컴파일 과정 (0) | 2021.04.11 |
Spring - AOP (0) | 2021.04.08 |
Spring - MVC, 서블릿 (0) | 2021.04.01 |