저는 한동안 C#에서 Java로 전환해 왔습니다. Java와 C#의 구문의 차이점에 대해 요약해 보겠습니다. 혹시 다른 의견이 있으시면 하이한이 처음 Java를 배웠을 때 물어보고 싶습니다. , 그는 구문이 C#의 구문과 거의 동일하다고 느꼈습니다. (C#은 Java와 거의 동일하다고 말해야 합니다. 결국 Microsoft의 C#은 의도적으로 Java의 구문 습관을 모방합니다.)
Bill Gates는 "Java는 가장 뛰어난 프로그래밍 언어"라고 말한 적이 있습니다.
좀 더 가까이에서 Java와 C#의 구문 차이점을 살펴보겠습니다. . .
1. 네임스페이스 및 패키지
유사한 기능을 함께 구현하는 클래스를 구성하기 위해 C#에서는 네임스페이스(namespace)라는 개념을 도입합니다.
Java에서는 이에 해당하는 것을 패키지라고 합니다.
2. 클래스 접근 제어의 차이점
C#에는 공개 및 기본값의 두 가지 유형만 있습니다(내부와 동일).
public은 모든 클래스(동일한 프로젝트 및 다른 프로젝트)에서 액세스할 수 있습니다.
내부(class 키워드 앞에 제어 문자가 추가되지 않은 경우 기본값은 내부임). 이는 동일한 프로젝트에서만 클래스에 액세스할 수 있음을 나타냅니다.
Java에는 공개와 기본의 두 가지 유형만 있습니다.
public은 모든 클래스에서 액세스할 수 있습니다. 기본적으로(class 키워드 앞에 제어 문자가 추가되지 않은 경우) 동일한 패키지의 모든 클래스에서만 액세스할 수 있습니다.
3. 수업 구성원의 접근 통제
C#에는 공개, 보호, 비공개(기본값), 내부(여기서는 내부와 기본값이 다름)의 네 가지 유형이 있습니다.
public은 모든 클래스에서 접근 가능
protected는 서브클래스에서만 접근 가능
private(즉, 기본적으로 제어 문자가 작성되지 않은 경우)은 클래스 내에서만 액세스할 수 있습니다.
내부는 동일한 프로젝트의 클래스에서 액세스할 수 있습니다.
Java에는 공개, 보호, 비공개 및 기본의 네 가지 유형이 있습니다.
public은 모든 클래스에서 접근 가능
protected는 동일한 패키지의 다른 클래스 또는 다른 패키지의 하위 클래스에서 액세스할 수 있습니다.
Private은 클래스 내에서만 사용할 수 있으며 기본적으로 이 패키지의 다른 클래스에서 액세스할 수 있습니다. 하위 클래스와 상위 클래스가 서로 다른 패키지에 있는 경우 하위 클래스는 상위 클래스의 기본 액세스 제어 멤버에 액세스할 수 없습니다.
4. C#의 클래스 상속은 콜론을 통해 구현되며, Java에서는 확장이 사용됩니다.
인터페이스는 C#에서는 콜론:을 통해 구현되고 Java에서는 구현됩니다.
Sealed 클래스는 C#에서는 sealing을 사용하고 Java에서는 final을 사용하여 구현됩니다.
상수는 C#에서는 const로, Java에서는 final로 구현됩니다.
C#의 속성은 set 및 get 코드 블록을 사용하여 구현됩니다. Java에서는 일반적으로 C#의 필드와 유사한 필드가 속성을 나타내는 데 사용되거나 setter 및 getter 생성자를 사용하여 구현됩니다.
C#에는 부분 클래스 개념이 있지만 Java에는 없습니다.
C#에는 읽기 전용이지만 Java에는 없는 읽기 전용 수정 속성이 있습니다.
C#에는 가상 및 재정의된 수정된 가상 메서드와 재정의된 메서드가 있지만 Java에는 없습니다. Java의 기본 부모 클래스에 있는 메서드는 모두 가상입니다.
Java에는 정적{} 및 동기화된{} 코드 블록 개념이 있지만 C#에는 없습니다.
Java에는 레이블(예: labelA:) 개념이 있지만 C#에는 없습니다.
C#에서는 하위 클래스가 base.method()를 사용하여 상위 클래스의 메서드를 호출하고, Java에서는 super.method()를 사용합니다.
C#에서는 인스턴스가 특정 클래스에 속하는지 확인하는 데 is를 사용하고, Java에서는 instanceof를 사용합니다.
C#에서는 foreach(int i in array)를 사용하여 배열의 각 요소를 순회하며, Java에서는 for(int i : array)를 사용합니다.