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
'Backend > Do it 자바 완전 정복 강의' 카테고리의 다른 글
11장 자바 제어자 - final, abstract (2) | 2025.01.20 |
---|---|
10장 클래스의 상속과 다형성 (0) | 2025.01.17 |
08장 클래스 외부 구성 요소 (0) | 2025.01.17 |
07장 클래스 내부 구성 요소 (0) | 2025.01.17 |
06장 클래스와 객체 (0) | 2025.01.17 |