접근제어자

C/Java : 2007. 11. 6. 11:23

- 클래스의 내부에 선언된 데이터를 보호하기 위함.(캡슐화)

- 사용처 : 클래스 - public, default / final, abstract

               멤버변수 - public, protected, default, private / final, abstract, static

               메서드 - public, protected, default, private / final, static

               생성자

               지역변수 - final


public / 접근제한이 전혀 없다

protected / 다른패키지의 자손클래스까지 접근 가능

default / 같은 패키지 안에서만 접근 가능

private / 같은 클래스 안에서만 접근 가능


 제어자

 같은클래스

 같은패키지

 자손클래스

 전체

 public

 ○

 ○

 ○

 ○

 protected

 ○

 ○

 ○


 default

 ○

 ○



 private

 ○





* default - 아무 접근제어자도 사용하지 않는 것.


캡슐화 - (접근제어자를 이용해 제한)


생성자의 접근제어자를

private로 지정하면 외부에서 접근할수 없어 객체를 생성할 수 없게 된다.

클래스 내부에서는 생성가능.

객체를 생성해서 반환해줄 public메서드로 외부에서 클래스를 이용  -> public static이어야 한다.

생성자가 private인 클래스는 다른 클래스의 조상이 될수 없다.(final추가)


- 메서드에 static는 몸통이 있는 메서드에만 사용할 수 있기 때문에 abstract(추상)를 함께 쓸수 없다.

- final은 클래스를 확장할수 없다는 의미이고, abstract는 상속으로 완성되어야 한다의 의미로 동반불가

- abstract메서드의 접근제어자는 private일수 없다.

- private는 메서드를 오버라이딩 할수 없기 때문에 꼭 final과 함께 쓸 필요는 없다.

Posted by 청웨일