Skip to content

Latest commit

 

History

History
66 lines (56 loc) · 2.04 KB

AccessModifier.md

File metadata and controls

66 lines (56 loc) · 2.04 KB

접근 제한자

작성자

tdm1223 rlatjdwo555 Stupid07

접근 제한자?

public

  • 가장 넓은 범위의 접근 제한자
  • 주로 Getter/Setter 메소드에 사용한다. 객체 데이터를 외부에서 직접 접근할 경우 무결성이 깨질 수 있기 때문이다.

protected

  • 클래스의 내부, 상속 관계에 있는 클래스에서만 사용 가능한 접근 제한자
  • 클래스 외부에서는 proteted멤버에 접근할 수 없다.

private

  • 클래스의 내부에서만 사용 가능한 접근 제한자
  • 주로 자료 보호의 목적으로 사용한다.
  • 내부에서만 쓰이는 함수에 사용한다.

언어별 특징

Java

  • Java에는 아무것도 선언하지 않았을 때 기본으로 default 접근 제한자 설정
Same Project Other Package Subclass Same Package Same class
public O O O O
protected X O O O
default X X O O
private X X X O
  • 단, Java의 최상위 class 선언에는 public과 default 밖에 적용 할 수 없음
  • Inner class 선언에는 protected와 private도 사용 가능함

C++

class Position
{
public:
    int x;
    int y;
protected:
    int a;
private:
    int b;
}
  • 클래스내 멤버에 대한 접근 제한자를 두지 않으면 private
  • 구조체내 멤버에 대한 접근 제한자를 두지 않으면 public
  • friend 키워드를 통해 접근 제한자를 무시할 수 있다.

C#

  • getter, setter를 단순화 하는 프로퍼티라는 변수를 제공
class Position
{
    private int x;
    public int X
    {
        get { return x; }
        set { x = value; }
    }
}