C#의 네임 스페이스와 Java 패키지의 차이점은 무엇입니까?C#의 네임 스페이스와 Java 패키지의 차이점
답변
은에서 : http://www.javacamp.org/javavscsharp/namespace.html
자바
패키지 유형의 충돌을 방지하기 위해 파일이나 공공 유형을 구성하는 데 사용됩니다. 패키지 구조는 파일 시스템에 매핑 될 수 있습니다.
system.security.cryptography.AsymmetricAlgorithm aa;
을 대체 할 수있다 :
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
패키지에 대한 별칭이 없습니다. 특정 유형을 언급하려면 import 문이나 완전한 이름을 사용해야합니다.
package n1.n2;
class A {}
class B {}
또는
package n1.n2;
class A {}
는 또 다른 소스 파일 :
package n1.n2;
class B {}
패키지는 중첩 될 수 없습니다. 하나의 소스 파일에는 하나의 패키지 명령문 만있을 수 있습니다.
C 번호
네임은 프로그램을 구성하는 데 사용되며, "내부"조직 프로그램에 대한 시스템 및 "외부"조직화 시스템처럼 두. 예를 들어
using myAlias = System.Security.Crypography;
, 또는
using System.Security.Crypography;
AsymmetricAlgorithm aa;
은, 하나는 네임 스페이스에 대한 별칭을 지정할 수 다음
myAlias.AsymmetricAlgorithm
namespace N1.N2
{
class A {}
class B {}
}
으로 클래스를 참조하십시오
System.Security.Cryptography.AsymmetricAlgorithm aa;
는 대체 될 수있다
또는
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
Java에는 "namespace"라는 용어가 없습니다. 은 이름 범위를 제공하기 위해을 Java에서 네임 스페이스로 사용합니다. 또한 접근성 모델의 일부이기도합니다. section 7 of the Java Language Specification에서
은 :
프로그램
은 패키지 세트로 구성되어 있습니다. 각 패키지에는 유형에 대한 자체 이름 집합이 있으므로 이름 충돌을 방지하는 데 도움이됩니다. 최상위 유형은 유형이 공개로 선언 된 경우에만 선언하는 패키지 외부에서 액세스 할 수 있습니다 (§6.6).
편집 : 좋아, 정화 후 : 자바 패키지는 C#을 네임 스페이스에 유사한 입니다 - C에서 # 네임 스페이스 및 접근성이 완전히 직교 반면 그것은, 접근성에 영향을 제외한 것이다.
C++/C#에서 네임 스페이스는 다른 장소의 변수에 실수로 같은 이름을 사용하여 충돌을 피하기 위해 이름을 분할하는 데 사용됩니다.
Java에서는 패키지가 모듈 이상으로 사용됩니다. 패키지는 모듈 용으로 사용됩니다. 이름 지정은 그 일부에 지나지 않습니다.
몇 가지 다른 점이 있습니다.
Java에서 디렉토리 구조는 패키지 구조와 일치해야합니다. 아니 C#에서 이러한 제한.
C#에서는 한 파일에 여러 개의 네임 스페이스를 가질 수 있습니다. Java에서 하나의 파일 은 하나의 패키지에 속합니다 (이전 참조).
Java에는 기본/패키지 접근성이 있습니다. 어셈블리에서 C# 내부 액세스 가능성은 입니다.
VS와 Eclipse를 사용하여 프로젝트를 구조화하면 차이가별로 없을 것입니다.
java에서는 패키지에 영향을주는 클래스에 다양한 액세스 지정자를 적용 할 수 있습니다.
보호 : 같은 패키지에 다른 패키지의 서브 클래스에 접근, 기본 : 접근 동일한 패키지에, 공공 : 보편적 접근, 개인 : 동일한 패키지로도 액세스 할 수 없습니다.
액세스 지정자 이러한 유형의 날카로운 C에서 네임 스페이스에 적용되지 않습니다
- 1. 네임 스페이스와 클래스의 클래스
- 2. PHP는 네임 스페이스와 자동로드
- 3. 네임 스페이스와 단위
- 4. PHP 네임 스페이스와 클래스
- 5. 네임 스페이스와 물리적으로 코딩?
- 6. 네임 스페이스와 목표 C
- 7. PHP 네임 스페이스와 상속
- 8. Java 패키지, .NET 어셈블리 및 .NET 네임 스페이스 란 무엇이며 .NET 네임 스페이스와 동일한 Java 패키지입니까?
- 9. 네임 스페이스와 함께 ::에서 C++
- 10. pimpl은 익명 네임 스페이스와 호환됩니까?
- 11. XSLT 및 XML 네임 스페이스와
- 12. 레일 네임 스페이스와 중첩 리소스
- 13. jQuery 플러그인 네임 스페이스와 반복자는
- 14. XML 네임 스페이스와 XHTML의 결합
- 15. msbuild 게시와 패키지의 차이점
- 16. 레일 2 네임 스페이스와 얕은 루트 문제
- 17. 글로벌 자바 스크립트 네임 스페이스와 모카
- 18. 네임 스페이스와 개인 정적 클래스 멤버
- 19. 네임 스페이스와 이름이 같고 WCF와 혼동되었습니다.
- 20. Tcl - 네임 스페이스와 패키지를 여러 파일로 나눕니다.
- 21. PrimeFaces의 네임 스페이스와 연결된 TagLibrary가 없습니다.
- 22. 익명 네임 스페이스와 하나의 정의 규칙
- 23. xsd : any를 네임 스페이스와 함께 사용하려면 어떻게해야합니까?
- 24. 동적 네임 스페이스와 XML 직렬화를 추가하는 방법
- 25. 다른 어셈블리의 네임 스페이스와 함수 이름이 중복되었습니다.
- 26. PHP 네임 스페이스와 동적 클래스 이름
- 27. springs.schemas의 스프링 네임 스페이스와 자리 표시 자
- 28. PHP 확장 지퍼, ZipArchive 네임 스페이스와
- 29. 네임 스페이스와 PHP가있는 동일한 중첩 XML 요소
- 30. C++ 모듈이란 무엇이며 네임 스페이스와 어떻게 다른가요?
나는 물론 C#에서 네임 스페이스를 참조하는 의미! – Mazzy