<this>
- 생성된 객체(인스턴스) 자기의 주소(참조, 레퍼런스)
- 생성된 객체(인스턴스)가 자기 자신을 호출하는 방식
- 클래스 구성 요소에 this 활용
필드 : this.필드
생성사 : this() -> 생성자(constructor) 내부에서만 사용 가능
<static>
- 사전적 의미: 정적
- 정적: 미리 만듦
- 동적: 나중에 만듦 (new)
- 정적 멤버는 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다.
- 객체마다 가지고 있어야 할 데이터라면 인스턴스 필드로 선언
- 객체마다 가지고 있을 필요성이 없는 공용적인 데이터라면 정적 필드로 선언
<static 동작>
- static 멤버(필드, 메소드)는 프로그램 실행 직전에 미리 만들어진다.
- 객체(인스턴스) 생성 되기 전에 미리 만들어진다.
- 객체(인스턴스) 생성(new) 없이도 만들어진다. (객체를 만들지 않아도 사용 가능)
- 하나의 static 멤버가 만들어지면 모든 객체(인스턴스)가 공유
<static 사용 이유>
- 모든 객체(인스턴스)가 공유하기 위해
- 객체(인스턴스) 생성 (new) 없이 클래스를 사용하기 위해
<static 멤버 접근 방식> // 전에는 객체명.자원 이렇게 사용함
- 필드: 클래스명.필드명
- 메소드: 클래스명.메소드명()
<final> // 상수: 항상 같은 수
- 상수에 언제든 값을 한번 저장하고 다음에 다시 바꾸지 않을 때 사용
- 상수, 메소드, 클래스에 사용 가능
1) 상수: final 타입 상수명 --> 값 변경 X
2) 메소드: final 반환타입 메소드명(매개변수){} --> 오버라이드 X
3) 클래스: final class 클래스명{} --> 상속 X
★ static final: 값이 변하지 않는 클래스 상수(초기화 필요)
필드나 메소드 앞에 static이 있으면 객체 생성 X