[Java] 1 클래스-3. 정적 멤버와 static

🐷Jinie (juniorDeveloper)·2020년 10월 28일
0

Java

목록 보기
3/12
post-thumbnail

1. 정적 멤버와 static

  • 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드
    (정적필드, 정적 메소드)
  • 정적 멤버는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 소속된 멤버
  • 메소드 선언시 static 키워드 추가
  • 객체마다 가지고 있을 필요성이 없는 공용적인 데이터라면 정적 필드로 선언
  • 클래스가 메모리로 로딩되면 정적 멤벌ㄹ 바로 사용할 수 있다.
클래스명.메소드
클래스명.필드
  • 객체 참조 변수로도 접근이 가능
  • 하지만 정적 요소는 클래스 이름으로 접근하는 것이 좋다.

2. 싱글톤 (Singleton)

  • 전체 프로그램에서 단 하나의 객체만 만들도록 보장해야하는 경우가 있다.
  • 단 하나만 생성된다.
  • 클래스 외부에서 new연산자로 생성자를 호출할 수 없도록 막아야한다.
  • private접근제한자 사용 : 외부에서 호출을 막기위해

3. final

  • 최종적인 필드
  • 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없다.
    1. 필드선언시
    2. 생성자에서 주기

4. 상수 (static final)

  • final과 다르다. 불변의 숫자, 초기값을 여러가지값으로 줄 수 없다.
  • static이면서 final이어야한다.
  • class에만 포함된다.
  • 한 번 초기값이 저장되면 변경할 수 없다.

5. 패키지

  • 수백개의 클래스를 체계적으로 관리하기 위한 것
  • 클래스만으로 개발하면 유지보수가 어렵다.
  • 패키지는 클래스를 유일하게 만들어주는 식별자이자 폴더
  • 패키지가 다르면 같은이름의 클래스라도 다른 클래스로 인식
  • 상위패키지.하위패키지.클래스
  • 같은 패키지에 속하는 클래스들은 아무런 조건없이 다른 클래스를 사용할 수 있다.
    하지만, 다른 패키지에 있다면
    1. 패키지와 클래스를 모두 기술한다.
      public class car{
      	com.hankook.Tire tire = new com.hankook.Tire();
      }
      다만, 클래스명이 길거나 패키지명이 길 경우 비효율적이다.
    2. import를 사용한다.
      import com.hankook.Tire;  //import com.hankook.*;도 가능
      public class car{
          Tire tire = new tire();
      }
  • *는 패키지에 속하는 모든 클래스를 의미한다.

6. 접근제한자

  • main 메소드를 가지지 않는 대부분의 클래스는 라이브러리 클래스.
  • 이때 데이터를 보호하기위해 사용한다.
  • public : 외부 클래스가 자유롭게 사용할 수 있는 공개멤버
  • protected : 같은 패키지 또는 자식클래스에서 사용할 수 있는 멤버
  • default : 같은 패키지에 소속된 클래스에서만 사용할 수 있는 멤버
  • private : 외부에 노출되지 않는 멤버
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글