성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

C# vs JAVA 접근제어자 본문

백엔드개발/C#

C# vs JAVA 접근제어자

hyemi_flora 2024. 3. 29. 15:18

Java와 C#은 비슷한 목적으로 사용되는 객체 지향 프로그래밍 언어이나 접근 제어자에는 몇 가지 차이가 있다. 

  1. public:
    • Java: 다른 클래스, 패키지 및 모든 곳에서 접근 가능.
    • C#: 동일한 어셈블리 내에서와 다른 어셈블리에서 모두 접근 가능.
  2. private:
    • Java와 C#: 같은 클래스 내에서만 접근 가능.
  3. protected:
    • Java: 동일한 패키지 내에서는 어디서든 접근 가능하며, 다른 패키지에서는 해당 클래스의 하위 클래스에서만 접근 가능.
    • C#: 동일한 클래스나 하위 클래스에서만 접근 가능.
  4. default(package-private) (Java):
    • Java에서는 별도의 키워드 없이 접근 제어자를 명시하지 않으면 기본적으로 패키지 내에서만 접근 가능한 제어자로 취급.
    • C#에는 이에 해당하는 제어자가 없으며, 대신 internal 제어자가 유사한 기능을 제공.
  5. internal (C#):
    • Java에는 없는 C#의 접근 제어자로, 동일한 어셈블리 내에서만 접근 가능.
  6. protected internal (C#) vs protected (Java):
    • C#: 동일한 어셈블리 내에서는 어디서든 접근 가능, 다른 어셈블리에서는 해당 클래스의 하위 클래스에서만 접근 가능.
    • Java: 비슷한 역할을 하지만, 패키지 내에서의 접근 제한은 없다.
  7. private protected (C#):
    • C#: 동일한 어셈블리 내에서만 하위 클래스에서 접근 가능.
    • Java에는 이에 해당하는 제어자가 없다.

 

=>

  • 접근 범위에 대한 확장:
    • Java에서는 특별한 접근 제어자가 없으며, 패키지 밖에서의 접근을 허용하는 제어자는 없다.
    • C#에서는 protected internal 제어자를 사용하여 동일한 어셈블리 내에서는 어디서든 접근 가능하고, 하위 클래스에서도 접근 가능한 멤버를 지정할 수 있다.
  • 접근 제어자의 명칭:
    • Java: default, public, private, protected 등 명시적인 접근 제어자 키워드를 사용
    • C#: internal, protected internal, private protected 등의 명시적인 접근 제어자 키워드를 사용