2023. 6. 3. 17:34ㆍHigh Level Programming Language
Package
자바에서 package 키워드는 클래스를 패키지에 속하도록 정의하는 데 사용됩니다. 패키지는 클래스들을 논리적으로 그룹화하고, 클래스들 간의 이름 충돌을 방지하고, 코드의 구조화를 도와주는 역할을 합니다. 여러 가지 이유로 package 키워드를 사용하는 이유는 다음과 같습니다:
- 이름 충돌 방지: 패키지는 동일한 이름을 가진 클래스들을 구분할 수 있도록 해줍니다. 서로 다른 패키지에 속한 클래스들은 같은 이름을 가질 수 있습니다. 이를 통해 다른 패키지에서 동일한 이름의 클래스를 사용할 때 이름 충돌을 방지할 수 있습니다.
- 코드 구조화: 패키지는 클래스들을 그룹화하여 코드를 구조화하는 데 도움을 줍니다. 관련된 클래스들을 하나의 패키지에 포함시킴으로써 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다. 패키지를 사용하여 클래스들을 논리적으로 조직화할 수 있습니다.
- 접근 제어: 패키지는 접근 제어를 위한 범위(scope)를 제공합니다. 패키지 내에서는 패키지 내의 모든 클래스에 접근할 수 있지만, 외부 패키지에서는 접근을 제한할 수 있습니다. 클래스에 패키지를 명시함으로써 클래스의 접근 범위를 조절할 수 있습니다.
- 패키지 Export: 패키지를 사용하여 클래스를 다른 사람들과 공유할 수 있습니다. 클래스를 특정 패키지에 속하도록 정의하면, 다른 사람들이 해당 패키지를 import하여 클래스를 사용할 수 있게 됩니다.
따라서, package 키워드는 클래스를 패키지에 속하도록 명시함으로써 이름 충돌 방지, 코드 구조화, 접근 제어, 패키지 내보내기 등의 장점을 제공합니다.
자바에서 같은 패키지에 속한 클래스는 import 문 없이 사용할 수 있습니다. 자바에서 패키지는 클래스들을 논리적으로 그룹화하는 방법으로 사용됩니다. 같은 패키지 내의 클래스들은 서로에게 접근 권한을 가지며 import 문을 사용하지 않고도 직접 참조할 수 있습니다.
따라서, 같은 패키지에 속한 클래스들은 패키지 이름과 클래스 이름을 명시하여 직접 사용할 수 있습니다. 예를 들어, 다음과 같은 패키지 구조가 있다고 가정해 봅시다:
package com.example.myapp;
public class MyClass {
// MyClass의 내용
}
위의 MyClass 클래스는 com.example.myapp 패키지에 속해 있습니다. 이 패키지 내에서 다른 클래스에서 MyClass를 사용할 때, import 문 없이 직접 참조할 수 있습니다:
package com.example.myapp;
public class AnotherClass {
public void someMethod() {
MyClass myObject = new MyClass();
// MyClass 객체를 사용하는 코드
}
}
위의 예제에서 AnotherClass는 같은 패키지[com.example.myapp]에 속한 MyClass를 import 문 없이 바로 사용하고 있습니다.
하지만 다른 패키지에 속한 클래스를 사용할 때에는 import 문을 사용하여 해당 클래스를 가져와야 합니다.
패키지 도메인 이름 네이밍
패키지는 도메인 이름을 역순으로 사용하여 명명됩니다. 예를 들어, 도메인 "myapp.example.com"의 역순인 "com.example.myapp"는 도메인 "example.com"의 "myapp" 패키지를 나타냅니다.
패키지의 도메인 이름을 역순으로 사용하여 명명하는 것은 일반적인 관례입니다. 이 관례는 도메인 이름을 패키지 이름에 반영함으로써 패키지의 유일성을 보장하고 충돌을 방지하는 데 도움을 줍니다.
예를 들어, "example.com"이라는 도메인을 가진 회사의 애플리케이션을 위한 패키지를 만든다고 가정해봅시다. 일반적으로 이러한 패키지는 "com.example"와 같이 명명됩니다. 도메인 이름을 역순으로 사용하는 이유는 패키지 이름에 도메인의 계층 구조를 반영하기 때문입니다.
이 관례를 따르면 패키지 이름은 도메인 이름을 거꾸로 나열한 후 패키지 이름을 추가합니다. 이렇게 하면 도메인 이름이 패키지 이름의 일부가 되며, 도메인 이름이 다른 패키지와 충돌하지 않도록 합니다.
예를 들어, "example.com" 도메인을 가진 회사의 "myapp" 애플리케이션을 위한 패키지 이름은 "com.example.myapp"가 될 것입니다. 이렇게 하면 패키지 이름이 도메인 이름과 패키지의 계층 구조를 함께 표현하게 됩니다.
이 관례는 패키지의 고유성과 가독성을 높이는 데 도움을 주며, 다른 패키지와의 충돌을 방지합니다.
이런 식으로 패키지는 고유한 이름을 가지며 서로 다른 패키지는 서로 격리되어 있습니다.
클래스 파일은 패키지 계층 구조에 따라 디렉토리에 배치됩니다. 예를 들어, 패키지 "com.example.myapp"에 속하는 클래스는 "com/example/myapp" 디렉토리에 위치합니다.
(폴더 구조를 myapp/example/com 이런 식으로 하면 이상하니까, 왜? com은 그냥 도메인에서 회사나 개인 블로그 도메인에 붙이는 도메인이니까)
실제 예
'High Level Programming Language' 카테고리의 다른 글
Java Advanced Programming Quiz 문제 + 정답 (0) | 2023.06.03 |
---|---|
Object Graph (0) | 2023.06.03 |
객체 지향 프로그래밍 (0) | 2023.06.03 |
JVM 메모리 구조 (0) | 2023.06.03 |
Java Components (0) | 2023.05.29 |