*** 접근 지정자***
1. public : + 제약x 서로 다른 패키지도 접근 가능.
2. protected # 같은 패키지만 접근 가능, 패키지가 달라도 접근 가능할 경우는 상속 관계여야한다.
3. default 같은 패키지만 접근 가능
4. private: - 같은 클래스에서만 접근 가능
위 접근지정자 순으로 public -> private (1~4번순)으로 갈수록 제약이 커진다.
***static ***
클래스 작성의 경우 outer 클래스 및 inner 클래스가 있음
위 두가지 클래스를 동시 사용시 inner 클래스에서만 사용 가능하다.
메서드에서 사용할 시, 객체 생성 없이 메서드를 사용하기 위함.
변수: 프로그램 내에서 특정 데이터 값을 계속 유지할 목적이라면 static 변수가 적합.
static 키워드는 프로그램 실행 시 단 한번 생성됨. (method area 메모리 영역)
인스턴스 메서드 및 변수는 객체 생성(new)시 생성 -- heap 메모리 영역 , 객체 소멸시 삭제
static 키워드의 경우 클래스명으로 바로 접근 가능하다
인스턴스 키워드의 경우 객체 명으로 접근 가능하다.
static에서 힙쪽으로는 접근 x
힙에서는 static으로 접근 가능
why? ==> static은 이미 생성이 돼있는 상태이고, 힙은 new 생성시 후에 만들어지기 때문이다.
메모리 구조
메소드 에어리어(method area) { 클래스 영역, static 영역, 상수 영역(final, contant) .. 으로 구성됨}
객체의 소멸 ==> 자바의 가비지컬렉션(GC)가 더 이상 필요하지 않는 객체를 수집하여 메모리에서 제거시킴.
ex) Student s = new Student("홍길동"); ---> 아래 이순신으로 새로운 정보를 입혔으므로 GC가 삭제시킴.
Student s = new Strudent("이순신");
초기화 블럭
***기본적으로 실행문은 블럭안에 있어야 한다.
ex) system.out.println(); == > 메서드 안에서나 생성자 안. 클래스 중괄호도 블럭이라고 생각할 수 있지만 안된다. 무조건 생성자 이상의 블록에서 실행 가능.
인스턴스 블럭은 호출하지 않으면 실행되지 않는다.
static 블럭은 호출하지 않아도 실행된다.
'Java > Java 정리' 카테고리의 다른 글
Wrapper Class 래퍼 클래스 (0) | 2022.10.21 |
---|---|
컬렉션 프레임워크 - HashSet (0) | 2022.10.21 |
패키지(Package) (0) | 2022.08.21 |
인터페이스 (Interface) (0) | 2022.08.21 |
추상(Abstract) (0) | 2022.08.21 |