Java - package and static

|

개인적인 연습 내용을 정리한 글입니다.
더 좋은 방법이 있거나, 잘못된 부분이 있으면 편하게 의견 주세요. :)


패키지 (package)

자바 프로그램은 많은 클래스로 구성되고, 이러한 클래스를 폴더 형식으로 관리하는 것을 패키지라고 한다.

프로젝트를 진행 시, 하나의 프로젝트 안에는 수많은 클래스들이 생성되는데, 해당 클래스들을 특정 목적끼리 모아 디렉토리를 만들어 디렉토리 안에서 클래스를 관리하는 것을 패키지라고 한다.

패키지 이름 결정 요렁

  • 패키지 이름은 패키지에 속해있는 클래스가 최대한 다른 클래스와 중복되는 것을 방지하도록 만든다.
    • 패키지 안에 속해잇는 클래스들의 이름을 대표할 수 있는 이름으로 패키지 이름을 생성한다.
  • 패키지 이름은 일반적으로 도메인을 거꾸로 이용한ㄷ.
    • 큰 규모의 프로젝트 진행 시, 이 패키지가 다른 프로젝트에서도 사용될 수 있는데 다른 프로젝트에 동일한 이름의 패키지가 있을 경우 낭패를 보게 된다. 즉 어디서든 유니크하게 쓰일 수 있는 방법을 통해 패키지 이름을 설정해야하는데 그렇기 떄문에 세상에서 제일 유니크한 도메인 주소를 역순으로 표시하여 패키지 이름을 설정한다. (ex. com.java.~)
  • 개발 중에 패키지 이름과 구조는 변경될 수 있다. (리팩토리 > 리네임)

  • 패키지 이름만 보고도 해당 패키지 안에 있는 클래스가 어떤 속성과 기능을 가지고 있는 지 예상이 될 수 있어야한다.
    • 대충 이름을 지어놓는것이 아니라 어떤 클래스들이 모여있는지를 알 수 있도로 설장하는 것이 좋다.

import

다른 패키지에 있는 클래스를 사용하기 위해서 import키워드를 이용한다.

만약 내가 다른 패키지 안에 들어있는 클래스를 이용하고 싶을때, 해당하는 패키지의 풀네임과 해당 클래스 이름을 import 해줘야한다.

import가 없는 경우 에러가 뜨게 되는데, 만약 같은 패키지의 클래스를 사용하고 싶은경우에는 import없이 그냥 사용해도 된다.

import 하는 방법

1) 해당 패키지 경로를 모두 적어주는 경우 (com.java.패키지이름.패키지내의 클래스 이름;)

import com.java.Journal.DailtJournal;

2) 해당 패키지의 모든 클래스를 다 가지고 오고싶은 경우

import com.jave.Journal.*;

3) import없이 해당 클래스를 가져오고 싶은 경우 - 최악. 쓰지말길

com.java.Journal.DailtJournal journal = new com.java.Journal.DailtJournal();

static

클래스의 속성과 메서드에 static 키워드를 사용하면 어디서나 속성과 메서드를 공유할 수 있다.

동일한 클래스로부터 생성된 객체들끼리 데이터를 공유하기 위해서는 static을 사용하면 된다.

  • 동일한 클래스에서 만들어진 객체라고 할지라도 각 객체들은 서로다른 메모리에 저장되어있다.
  • 그러나 서로다른 객체들도 static 키워드가 붙은 변수에 있어서는 서로 데이터를 공유할 수 있다.
    • 동일한 클래스로부터 생성된 모든 객체가 다 함께 데이터를 공유하고싶을 경우 사용
public class Employebank {
  String name;
  static int amount = 0;
}

이러한 경우 각 객체들은 amount에 있어서는 서로 데이터를 공유할 수 있게 된다.