2023.01.11 - [JAVA/Java 기초] - 인스턴스 멤버, static, final ...
인스턴스 멤버, static, final ...
2023.01.10 - [JAVA/Java 기초] - 객체, 클래스 변수.java 객체, 클래스 변수.java 객체 객체(object)란 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것입니다. 객체는 속성과 동작으로
less-go.tistory.com
이전 글과 이어지는 내용 입니다.
자바의 패키지
- 클래스의 일부분이며, 클래스를 식별하는 용도 입니다.
- 패키지는 주로 개발 회사의 도메인 이름의 역순으로 만듭니다.
- 상위 패키지와 하위 패키지를 도트(.)로 구분합니다
- 패키지에 속한 바이트코드 파일(~.class)는 따로 떼어내어 다른 디렉토리로 이동할수 없습니다.

패키지 선언
패키지 선언은 package 키워드와 함께 패키지 이름을 기술한것입니다. 항상 소스파일 최상단에 위치합니다.
package 상위패키지.하위패키지;
public class 클래스명{...}
패키지 이름은 모두 소문자로 작성합니다.
패키지 이름이 서로 중복되지 않도록 회사 도메인 이름의 역순으로 작성하고, 마지막에는 프로젝트 이름을 붙여줍니다.

import문
다른 패키지에 있는 클래스를 사용하려면 import 문을 이용해서 어떤 패키지의 클래스를 사용하는지 명시합니다.

import문은 패키지 선언과 클래스 선언 사이에 작성합니다.
import키워드 뒤에는 사용하고자 하는 클래스의 전체 이름을 기술합니다.
package com.hankook;
public class Tire {}
package com.kumho;
public class Tire {}
다른 프로그램
package com.hyundai;
import com.hankook.*;
import com.kumho.*;
Tire tire = new Tire();
com.hankook.Tire tire = new com.hankook.Tire();
접근 제한자
중요한 필드와 메소드가 외부로 노출되지 않도록 해 객체의 무결성을 유지하기 위해서 접근 제한자를 사용합니다.

접근 제한자는 public, protected, (default), private 의 세가지종류가 있습니다.

클래스의 접근 제한
클래스를 선언 할때 public 접근 제한자를 생략하면 (default)클래스가 되어 다른 패키지에서 사용할수 없습니다.

반대로 선언시 public 제한자를 붙이면 다른 패키지에서도 사용이 가능해집니다.

예시입니다.
package exam01_01;
public class B {
// A클래스와 B클래스는
//같은 패키지, 다른 클래스인 상황
// 불린 public
// 정수 default
// 문자열 private
A a1 = new A(true); // public 접근 가능 : 모든 패키지에서 접근 가능.
A a2 = new A(1); // default 접근 가능 : 같은 패키지 내에서 접근 가능
A a3 = new A("문자열"); // private 접근 불가능 : 같은 클래스에 없기 때문에 접근이 불가능합니다.
}
package exam02_01;
import exam01_01.*;
public class C {
A a1 = new A(true); // public 접근 가능 : 모든 패키지에서 접근 가능.
A a2 = new A(1); // default 접근 가능 : 다른 패키지라서 접근 불가능
A a3 = new A("문자열"); // private 접근 불가능 : 다른 패키지면서 다른 클래스라 접근 불가
}
생성자의 접근 제한
생성자는 public, default, private 접근 제한을 가질수 있습니다.


예시 - A는 다른패키지 다른 클래스에 존재 합니다.
package exam03.package2;
import exam03.package1.*;
public class C {
public C() {
A a = new A();
a.field1 = 1; // public 모든 패키지에서 접근가능
// a.field2 = 1; // default 다른 패키지에 있어서 접근 불가능
// a.field3 = 1; // private 같은 클래스가 아니라서 접근 불가능
a.method1(); // public 모든 패키지에서 접근 가능
// a.method2(); // default 다른 패키지에 있어서 접근 불가능
// a.method3(); // private 같은 클래스가 아니라서 접근 불가능
}
}
'JAVA > Java 기초' 카테고리의 다른 글
| 싱글톤 패턴.java (0) | 2023.01.11 |
|---|---|
| Getter & Setter .java (0) | 2023.01.11 |
| 인스턴스 멤버, static, final ... (0) | 2023.01.11 |
| 객체, 클래스 변수.java (0) | 2023.01.10 |
| 참조-배열 등등...java (0) | 2023.01.10 |