Java 기본(2) - 제어자(modifier) / 내부 클래스(inner class)

김정욱·2021년 6월 18일
0

Java

목록 보기
2/13
post-thumbnail

ref :
https://www.youtube.com/watch?v=Hmu7YH8AXmI&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=76

제어자(modifier)

[ 설명 ]

  • 클래스클래스의 멤버(멤버 변수, 메서드)부가적인 의미 부여
  • 접근 제어자1개만 사용 가능 / 그 외 제어자조합 가능
  • 종류
    • 접근 제어자 : 클래스에는 public / default 가능
      • public
      • protected
      • private
      • default
    • 그 외
      • static
      • final
      • abstract
      • native / transient / synchronized / volatile / strctfp

[ 접근 제어자 ]

  • 대상
    • 클래스 : public / (default) 만 가능
    • 변수 / 메서드 : 4개 모두 가능
  • private
    • 같은 클래스 내에서만 접근 가능
  • default
    • 같은 패키지 내에서만 접근 가능
  • protected
    • 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근 가능
  • public
    • 접근 제한이 없음

[ static / final / abstract ]

static

  • 멤버변수
    • 모든 인스턴스공통적으로 사용되는 클래스 변수(cv)가 된다
    • 클래스 변수(cv)인스턴스를 생성하지 않고사용 가능
    • 클래스가 메모리에 로드될 때 생성
  • 메서드
    • 인스턴스를 생성하지 않고호출이 가능static 메서드가 된다
    • static 메서드 내에서는 인스턴스멤버들을 직접 사용할 수 X
      (메모리에 올리는데 다른 객체는 아직 존재하지 않기 때문)

final

  • final을 사용해 선언되면 변경될 수 없는 상태가 된다
    • 클래스
      • 확장될 수 없는 클래스가 된다 / 부모가 될 수 없다
      • String : 보안상 상속받을 수 없게 해서 접근할 수 없게 한다
      • Math : static 메서드의 집합이기 때문에 상속할 일이 없음
    • 변수
      • 값을 변경할 수 없는 상수가 된다
    • 메서드
      • 변경될 수 없는 메서드가 된다
      • 오버라이딩을 통해 재정의 될 수 없다

abstract

  • 추상화를 하기 위한 접근자
  • 대상
    • 클래스
      : 클래스 내에 추상 메서드선언되어 있음을 의미
    • 메서드
      : 선언부만 작성하고 구현부는 작성하지 않은 추상 메서드임을 알린다

내부 클래스(inner class)

  • 핵심
    • 클래스 내부클래스를 선언하여 사용할 수 있음
    • 각 선언 형태에 따라 Scope가 다르다는 것인지하면 된다
    • 원래 클래스 앞에 접근 지정자public / (default)만 가능하다
      --> 내부 클래스protected / public / (default) / private 모두 가능
  • 장점
    • 내부적으로 직접 접근해서 불필요한 객체 생성막을 수 있음
  • 내부 클래스의 종류
    • 인스턴스 내부 클래스 : 인스턴스 변수(iv)동일한 Scope
    • 스태틱 내부 클래스 : 클래스 변수(cv)동일한 Scope
    • 지역 내부 클래스 : 지역 변수(lv)동일한 Scope
    • 익명 내부 클래스
profile
Developer & PhotoGrapher

0개의 댓글