1. 접근제한자
: 클래스, 메서드, 필드 등에 대한 접근 권한을 제어하는 데 사용
- public: 모든 클래스에서 접근 가능
- protected: 같은 패키지 또는 상속 받은 클래스에서만 접근 가능
- default: 접근제한자를 명시하지 않으면 기본으로 같은 패키지 내에서만 접근 가능
- private: 같은 클래스 내에서만 접근 가능
→ 접근 범위에 따라 결정
→ 같은 클래스 / 패키지 / 상속 클래스에서 접근할 수 있는지 여부가 중요!!
2. static
: 클래스 수준에서 공유되는 변수를 정의하거나 메서드를 선언할 때 사용
- static 변수: 모든 인스턴스가 공유하는 클래스 변수
- static 메서드: 인스턴스가 아닌 클래스에서 직접 호출할 수 있는 메서드
→ 객체 인스턴스가 아니라 클래스 자체에 속하는 변수나 메서드
→ 정적 멤버(변수, 메서드)의 경우 인스턴스화 필수 X
→ 일반 멤버(변수, 메서드)의 경우 인스턴스화 필수!!
cf) static class
: 자바에 static class에 대한 개념 X
→ 내부에 클래스의 형태 중 static 중첩 클래스가 존재
- 정적(static) 중첩 클래스
: 일반 클래스와 달리 외부 클래스의 인스턴스와 독립적으로 존재 가능
→ 외부 클래스의 인스턴스 없이도 객체 생성 가능
3. finla
: 수정 불가능한 것
→ 사용 위치에 따라 의미가 가능
- final 변수: 값을 한 번만 할당할 수 있고, 그 이후 변경할 수 없음
- final 메서드: 해당 메서드를 하위 클래스에서 재정의(Override)할 수 없음
- final 클래스: 상속할 수 없는 클래스 즉, 해당 클래스를 하위 클래스로 만들 수 없음
→ 한 번 정해지면 더 이상 변경되지 않는다는 공통된 특성을 가짐
4. abstract
: 추상화 개념을 적용할 때 사용
→ 주로 클래스와 메서드에 사용
- abstract 클래스: 인스턴스를 생성할 수 없고, 추상 메서드를 포함할 수 있는 클래스
- abstract 메서드: 구현을 제공하지 않고 하위 클래스에서 반드시 구현해야 하는 메서드
→ abstract은 구현이 없는 상태를 의미
→ 설계 단계에서 구체적인 구현을 하도록 미루는 데 사용
5. interface VS abstract class
- interface: 구현이 없는 추상 메서드의 집합 다중 구현이 가능하며, 메서드 선언만 포함
- abstract class: 일부 구현을 포함할 수 있고, 상속을 통해 확장 가능. 단일 상속만 가능
→ 인터페이스: 다중 구현 가능
→ 추상클래스: 단일 상속만 가능, 구체적인 구현을 포함할 수 있음
6. extends VS implements
- extends: 클래스가 다른 클래스를 상속받을 때 사용
- implements: 클래스가 인터페이스를 구현할 때 사용
→ extends: 클래스 간의 상속
→ implements: 인터페이스의 메서드를 구현
7. super VS this
- this: 현재 인스턴스의 참조. 주로 필드와 지역 변수를 구분하거나, 생성자에서 다른 생성자를 호출할 때 사용
- super: 부모 클래스의 참조. 부모 클래스의 메서드나 생성자를 호출할 때 사용
→ this: 현재 객체
→ super: 부모 객체
8. 오버로딩(Overloading) VS 오버라이딩(Overriding)
- 오버로딩: 같은 이름의 메서드를 여러 개 정의하되, 매개변수 타입이나 개수가 다름
- 오버라이딩: 부모 클래스의 메서드를 자식 클래스에서 재정의하여 다른 동작을 구현
→ 오버로딩: 메서드의 시그니처가 다를 떄 사용
→ 오버라이딩: 상속받은 메서드의 구현을 변경할 때 사용
9. try - catch - finally
- try: 예외가 발생할 수 있는 코드를 포함
- catch: 예외가 발생했을 때 처리할 코드를 포함
- finally: 예외가 발생하든 그렇지 않든 항상 실행되는 코드를 포함
→ 예외 처리 흐름을 제어하는 데 사용
→ finally는 예외 처리 후 리소스 정리에 주로 사용
'Java' 카테고리의 다른 글
[Java] Set (0) | 2024.09.23 |
---|---|
[Java] List (0) | 2024.09.23 |
[Java] Collection (0) | 2024.09.12 |
[Java] API (0) | 2024.09.12 |
[Java] Exception (0) | 2024.09.10 |