공부 기록/Java with ChatGPT

[Java/ChatGPT] Day 16.5: 키워드 몇 가지 정리

dev.jelee 2025. 6. 25. 15:04

[ 학습 목표 ]

  1. 각 키워드들의 차이를 알고 이해하자.

[ 설명 ]

✅ static

- static은 클래스에 소속된 멤버를 정의할 때 사용한다.
- 인스턴스를 생성하지 않고도 클래스명으로 직접 접근이 가능하다.
- static 필드(변수)는 모든 인스턴스가 공유한다.
- static 메서드는 인스턴스 멤버(this, non-static)에 접근할 수 없다.

 

✅ final

- final은 한 번 할당된 값을 변경할 수 없게 만든다.
- 변수: 값을 제할당할 수 없음 (상수처럼 동작)
- 메서드: 오버라이딩 금지
- 클래스: 상속 금지
- 메모리에 몇 번 올라가느냐는 static과는 별개이며, final 자체로는 메모리 최적화와 무관하다.

 

static final

- static final은 변하지 않은 상수(Constant)를 정의할 때 사용한다.
- static: 클래스 레벨에서 공유됨
- final: 값 변경 불가
- 상수는 일반적으로 대문자와 언더스코어로 이름을 작성한다. (ex: MAX_SIZE)

 

private

- private는 해당 클래스 내부에서만 접근 가능하도록 제한하는 접근 제어자이다.
- 같은 패키지 내의 다른 클래스에서도 접근할 수 없다.
- 보통 priavte 필드는 getter/setter를 통해 간접적으로 접근한다.
- getter/setter는 public으로 정의하여 접근한다.

 

public

- public은 어디서든 접근 가능을 의미한다.
- 클래스, 메서드, 필드 모두에 사용 가능하다.
- 하나의 .java 파일에서 public 클래스는 하나만 존재해야 하며, 파일명과 클래스명이 같아야 한다.

 

✅ protected

- protected는 같은 패키지 또는 자식 클래스에 접근할 수 있도록 허용하는 접근제어자 이다.
- 다른 패키지라도 상속을 받은 클래스라면 접근 가능하다.
- 외부 클래스나 비상속 클래스에서는 접근할 수 없다.

 

✅ default (접근제한자 생략 시)

- default는 접근제한자를 명시하지 않았을 때 적용되는 기본 접근제어자이다.
- 같은 패키지 내에서만 접근이 가능하다.
- 다른 패키지에서는 접근할 수 없다.
- default라는 키워드를 쓰는 게 아니라 아예 생략한다.

 

✅ abstract

- abstract는 구현이 없는 추상적인 메서드나 클래스를 정의할 때 사용한다.
- abstract 메서드는 구현 없이 선언만 한다.
- abstract 클래스는 직접 인스턴스화할 수 없고, 반드시 상속 후 구현해야 한다.

 

✅ this

- this는 현재 객체 자신을 참조할 때 사용한다.
- 메서드 안에서 멤버 변수와 지역 변수 이름이 겹칠 때 구분 용도로 자주 사용된다.

 

✅ super

- super는부모 클래스의 멤버 (필드, 메서드, 생성자)를 참조할 때 사용된다.
- 자식 클래스에서 오버라이딩된 메서드 위에 super.method()로 원본 호출이 가능하다.

 

✅ extends

- extends는 클래스를 상속할 때 사용한다.
- 부모 클래스의 필드와 메서드를 자식 클래스가 상속받을 수 있다.

 

✅ implements

- implements는 인터페이스를 구현할 때 사용한다.
- 클래스는 인터페이스의 모든 추상 메서드를 반드시 구현해야 한다.

 

✅ interface

- interface는 추상 메서드의 집합을 정의한다.
- 클래스와 달리 다중 구현이 가능하며, Java 8 이후부터는 default 메서드도 가질 수 있다.

 

✅ instanceof

- instanceof는 객체가 특정 클래스의 인스턴스인지 확인하는 데 사용된다.
- 타입 캐스팅 전에 타입 검사 용도로 자주 사용된다.

 

✅ return

- return은 메서드 실행을 종료하고, 결과 값을 반환한다.
- void 메서드에서도 return; 만으로 종료할 수 있다.

 

✅ break, continue

- break: 반복문을 즉시 종료한다.
- continue: 반복문의 현재 반복만 건너뛰고, 다음 반복을 계속 수행한다.

 

✅ try, catch, finally, throw, throws

- 예외 처리 키워드이다.
- try: 예외 발생 가능 코드 블록
- catch: 예외 처리 로직
- finally: 예외 발생 여부와 관계없이 무조건 실행
- throw: 직접 예외를 발생
- throws: 메서드 선언 시 예외를 호출자에게 위임

 

✅ enum

- enum은 열거형 상수를 정의하는 클래스이다.
- 미리 정의된 상수 집합을 사용할 때 유용하며, 각 상수는 실제로 객체이다.

 

✅ new

- new는 객체를 생성할 때 사용된다.
- 생성자는 new 키워드에 의해 호출되며, 객체의 메모리 할당이 일어난다.

 

✅ null

- null은 어떤 객체도 참조하지 않고 있음을 의미한다.
- null 참조에 접근하면 `NullPointerException`이 발생할 수 있으므로 주의가 필요하다.

[ 메모 ]

  • 아직까지 용어들이 헷갈린다. 다시 읽으면 '아, 맞아. 이런 특징을 가지고 있고, 이럴 때 사용했지.' 라고는 아는데 막상 혼자서 코드 작성하려고하면 멍- 해진다. ㅎㅎ..