# 13.Java 기초 정리

1. 접근 제어자
    
2. 수정자
    
3. 인터페이스
    
4. 상속
    
5. 다형성
    
6. 추상 클래스
    
7. 예외 처리
    
8. 제네릭
    
9. 가비지 컬렉션
    
10. 패키지
    
    ### 접근 제어자
    

* public(공개) - public으로 선언된 클래스,메소드,변수는 어떤 클래스에서든지 접근할 수 있습니다.
    
* private(비공개) - private로 선언된 클래스의 멤버(변수,메소드)는 해당 클래스 내부에서만 접근할수 있습니다.다른 클래스에서는 접근할 수 없어 클래스의 내부 구현을 숨길 수 있습니다.
    
* default - 별도의 접근 제어자를 지정하지 않으면 기본적으로 default 접근 수준이 적용됩니다.
    
* protected(보호된) - 같은 패키지 내의 클래스와 상속받은 자식 클래스에서 접근이 가능합니다.상속받은 클래스가 부모 클래스의 멤버에 접근할 수 있도록 하면서, 외부에서의 접근을 제한합니다.
    
    ### 수정자
    
* static - 클래스 레벨의 멤버를 정의합니다.인스턴스 생성 없이 접근이 가능합니다.
    
* final - 한 번 할당된 후 변경할 수 없는 상수를 정의하거나,오버라이드 상속을 방지합니다.
    
* abstract - 구현되지 않은 메소드를 포함하는 클래스나 메소드를 정의합니다.
    
* synchronized - 멀티스레딩 환경에서 하나의 스레드만이 메소드나 블록에 접근할 수 있도록 합니다.
    
* volatile - 변수가 메인 메모리에서 직접 읽히고 쓰여질 것임을 나타냅니다.
    
    ### 인터페이스
    
* 메소드의 시그니처(이름,파라미터 타입,반환 타입)만을 정의하는 형태입니다.
    
* 클래스가 인터페이스를 구현하면 인터페이스에 정의된 모든 메소드를 구현해야 합니다.
    
* 다중 상속의 이점을 제공하며, 다형성을 촉진합니다.
    
    ### 상속
    
* 한 클래스가 다른 클래스의 속성과 메소드를 상속받는 것을 의미합니다.
    
* 코드 재사용성을 높이고 유지보수를 용이하게 합니다.
    
    ### 다형성
    
* 객체가 여러 가지 형태를 가질 수 있는 성질을 의미합니다.
    
* 오버로딩(동일한 이름의 메소드를 다른 파라미터로의 정의)과 오버라이딩(상속받은 메소드의 기능을 재정의)을 통해 구현됩니다.
    
    ### 추상 클래스
    
* 하나 이상의 추상 메소드를 포함하거나 추상적인 개념을 나타내는 클래스입니다.
    
* 추상 클래스는 인스턴스화할 수 없으며, 상속을 통해 자식 클래스에서 구체화됩니다.
    
    ### 예외 처리
    
* 실행 중에 발생할 수 있는 예외적인 상황을 처리하는 메커니즘 입니다.
    
* try,catch,finally,throw,throws 키워드를 사용합니다.
    
    ### 제네릭
    
* 클래스,인터페이스,메소드를 정의할 때 타입을 파라미터로 사용할 수 있게 하는 기능입니다.
    
* 타입 안정성을 높이고, 캐스팅을 줄여 코드를 보다 안전하고 읽기 쉽게 만듭니다.
    
    ### 가비지 컬렉션
    
* 사용되지 않는 메모리를 자동으로 정리하는 프로세스
    
* 메모리 누수를 방지하고 프로그램의 효율성을 향상시킵니다.
    
    ### 패키지
    
* 관련된 클래스와 인터페이스를 그룹화하는 방법입니다.
    
* 네임스페이스 관리와 접근 제어를 통해 코드의 모듈성을 높입니다.
