12일차
지역변수
- 함수안에서 만들어진 변수. 함수가 끝나면 사라졍
- 스택영역에 생성됭
멤버변수( = 필드, 인스턴스(객체) 변수 )
- 클래스 내부에 정의되는 변수 ( new 서클될때 그때 데이터생성 )
- 해당 클래스가 객체화 될때마다 각 객체내에 생성됨 (new 서클될때)
- 해당 객체가 소멸될 때! 같이 사라졍
정적변수 ( = 클래스변수 )
-해당 클래스로 객체를 하나도 안만들었어도 1개만 존재, 계속만들어도 1개 존재
-클래스 내부의 static 키워드를 포함해서 정의
-프로그램 실행시 생성, 종료시 소멸
-같은 클래스로 만든 객체들은 같은 클래스 영역에 있으니까 private클래스 변수에도 자유롭게 접근이 가능
-해당 클래스의 모든 객체들이 공유할 수 있는 공간 ( 자유롭게 접근가능 )
final - 값이 유지
static - 공간자체가 유지
멤버함수
- 클래스 내에 정의
- 해당 클래스로 객체를 생성할때마다 각 객체 내에 생성됨. 해당객체가 소멸될때 사라짐.
정적 메소드
- 클래스 내에 static 키워드와 함께 정의
- 프로그램이 실행될떄 한개 생성되서 프로그램 종료시 사라짐
- 멤버변수에게 접근이 안됨..()
-this 사용x
정적 메소드 활용 용도
1.정적변수에 대한 게터 세터
2.멤버변수의 상태와 상관없는 동작을 수행하는 기능을 구현할 때
3.객체의 상태와 상관없는 동작을 수행하는 메소드를 정의할때 사용
finalize
- 원래 존재함.
- 객체가 소멸되기 직전에 호출되는 메소드
- 우리가 똑같은 이름으로 다시 정의하면 해당 객체가 소멸될 때 우리가 정의한 함수내용을 실행함
1. 정적 변수는 어떤 경우에 사용하면 좋은가?
답: 정적 변수에 대한 게터 세터를 만들거나, 객체의 상태와 상관없는 동작을 수행하는 메소드를 정의할 때 사용
2. 정적 변수나 정적 메소드를 사용할 때, 클래스 이름을 통하여 접근하는 이유는 무엇인가?
답 : 객체가 없을 때도 존재하기 때문에 클래스 영역으로 분류함
3. main() 안에서 인스턴스 메소드를 호출할 수 없는 이유는 무엇인가?
답 : 정적 함수에서 멤버 함수에 접근 못하는 것처럼 Main함수는 static이기 때문에