ref :
https://www.youtube.com/watch?v=Hmu7YH8AXmI&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=76
클래스와클래스의 멤버(멤버 변수, 메서드)에부가적인 의미 부여접근 제어자는1개만사용 가능 /그 외 제어자는조합가능- 종류
- 접근 제어자 :
클래스에는public / default가능
- public
- protected
- private
- default
- 그 외
- static
- final
- abstract
- native / transient / synchronized / volatile / strctfp
- 대상
- 클래스 :
public/(default)만 가능- 변수 / 메서드 :
4개 모두 가능
- private
같은 클래스 내에서만접근 가능- default
같은 패키지 내에서만접근 가능- protected
같은 패키지 내에서, 그리고다른 패키지의 자손 클래스에서 접근 가능- public
접근 제한이 없음
static
- 멤버변수
모든 인스턴스에공통적으로 사용되는클래스 변수(cv)가 된다클래스 변수(cv)는인스턴스를 생성하지 않고도사용 가능클래스가 메모리에 로드될 때생성- 메서드
인스턴스를 생성하지 않고도호출이 가능한static 메서드가 된다static 메서드 내에서는인스턴스멤버들을 직접 사용할 수X
(메모리에 올리는데다른 객체는 아직 존재하지 않기 때문)
final
final을 사용해 선언되면변경될 수 없는 상태가 된다
- 클래스
확장될 수 없는 클래스가 된다 /부모가 될 수 없다- String :
보안상상속받을 수 없게해서접근할 수 없게 한다- Math :
static 메서드의 집합이기 때문에 상속할 일이 없음- 변수
값을 변경할 수 없는 상수가 된다- 메서드
변경될 수 없는 메서드가 된다오버라이딩을 통해재정의 될 수 없다
abstract
추상화를 하기 위한접근자- 대상
- 클래스
: 클래스 내에추상 메서드가선언되어 있음을 의미- 메서드
:선언부만 작성하고구현부는 작성하지 않은추상 메서드임을 알린다
- 핵심
클래스 내부에클래스를 선언하여 사용할 수 있음각 선언 형태에 따라Scope가 다르다는 것만인지하면 된다- 원래
클래스 앞에 접근 지정자는public / (default)만가능하다
-->내부 클래스는protected / public / (default) / private모두 가능
- 장점
내부적으로직접 접근해서불필요한 객체 생성을막을 수 있음
- 내부 클래스의 종류
- 인스턴스 내부 클래스 :
인스턴스 변수(iv)와동일한 Scope- 스태틱 내부 클래스 :
클래스 변수(cv)와동일한 Scope- 지역 내부 클래스 :
지역 변수(lv)와동일한 Scope- 익명 내부 클래스