Backend/Do it 자바 완전 정복 강의

09장 자바 제어자 - 접근 지정자와 static

solog 2025. 1. 17. 16:58

9-1. 자바제어자(modifier) #1 접근제어자

<접근 지정자>

- 멤버에 붙는 4가지 접근지정자가 존재.

- 아무것도 붙이지 않으면 int c 처럼 defualt를 접근지정자만 지정한 것이다.

- defualt 접근지정자와 package 접근지정자와 동일한 말

- 같은 패키지에 있으면 defualt는 모든 클래스에서 사용 가능 => 그러니까 package 접근지정자라고 하는 것이다.

- extends 는 상속을 의미한다.

- 클래스의 접근지정자는 2가지 밖에 안된 다는 것을 기억하자.

- 생성자 같은 경우 컴파일러가 자동으로 추가하기 때문에 따로 생성자의 접근지정자라고 공부하는 것

- 클래스의 접근지정자와 동일하게 생성자가 생성된다. (그렇다면 defualt와 public일것 => class가 두가지 밖에 안됨으로)

- 클래스 앞에 접근지정자 때문에 선언이 가능한 것이고 (A a가 가능), 생성자 앞 public 때문에 new A ()가 가능해지는 것. (클래스와 생성자의 접근지정자를 구분할 수 있어야 한다.)

 

- 클래스 지정자와 생성자의 지정자가 다를 경우 선언은 가능하나, 객체를 할당하는 new A()는 불가하다. 즉, 내부 패키지안에서만 객체를 만들 수 있다.

- 왼쪽 선언부와 오른쪽 생성자 만드는 파트가 분리되어 각각의 접근지정자가 되는지 안되는지 알아야한다.

- default 클래스는 import 조차 안돼므로 객체 사용하는 것 조차 불가능

 

9-2. 자바제어자(modifier) #1 static

- static은 붕어빵 기계 안에 있다. 

- 인스턴스 필드 안에 것을 사용하려면 객체 생성을 해야한다. (붕어빵을 생성해야한다.)

- static을 붙이면 static 영역에 저장된다. 힙메모리에는 위치가 저장되어있다. 

- static 필드 활용방법 #2 처럼 하면 n이 인스턴스 필드라고 생각할 것.

- a1.n=7과 a1.n=8 에서 n은 static 필드이므로 static 영역에 값이 저장이 되어 있다. => 그러므로 7에서 8로 바뀔 것. (같은 공간을 공유하므로)

- 정적필드 = static 필드

- Arrays.toString() => 클래스에 바로 . 찍고 사용했으니 이게 바로 정적 메서드이다.

 - static 자체가 클래스가 로딩되어질 때 class 뱃속에 존재한다.

- 객체 생성전에 static만 사용가능해야하니까 정적 메서드 내부에는 정적 맴버만 사용이 가능한 것.

- static은 객체랑 거리가 멀다. 그러므로, this 키워드를 사용할 수 없다. (객체를 생성전에 static이 가능하므로)

- 붕어빵 기계를 놓을 때(class 정의할때) static 초기화 블럭이 있으면 실행됨

- 생성자가 호출이 실행되기 전에 static 필드의 초기화가 진행하기 위해서 클래스가 로딩될때 초기화 블럭이 진행된다.

- JVM은 main 파일을 실행한다. (main 이름을 바꿀 수 없다.)

 

 

https://www.youtube.com/@doit4312/playlists

 

Do it 자바 완전 정복 동영상 강의

Do it 자바 완전 정복 동영상 강의입니다.

www.youtube.com