객체 지향 프로그래밍에서 공용, 개인 및 보호 란 무엇입니까?
답변:
이들은 액세스 수정 자 이며 캡슐화 (또는 정보 숨김)를 구현하는 데 도움이 됩니다. 정의되는 필드 또는 메서드에 액세스 할 수있는 다른 클래스를 컴파일러에 알립니다.
private
-현재 클래스 만 필드 또는 메서드에 액세스 할 수 있습니다.
protected
-이 클래스의 현재 클래스와 하위 클래스 (때로는 동일한 패키지 클래스) 만 필드 또는 메서드에 액세스 할 수 있습니다.
public
-모든 클래스는 필드를 참조하거나 메서드를 호출 할 수 있습니다.
이는 이러한 키워드가 클래스 정의 내에서 필드 또는 메서드 선언의 일부로 사용된다고 가정합니다.
그것들은 실제로 개념이 아니라 C ++ 및 Java와 같은 인기있는 언어에서 발생하는 경향이있는 (약간 다른 의미로) 특정 키워드입니다.
기본적으로 클래스가 멤버 (필드 또는 함수)에 대한 액세스를 제한 할 수 있도록합니다. 아이디어는 다른 유형에서 액세스 할 수있는 유형이 적을수록 종속성이 더 적게 생성 될 수 있다는 것입니다. 이를 통해 액세스 된 개체를 참조하는 개체에 영향을주지 않고보다 쉽게 변경할 수 있습니다.
일반적으로 공개는 모든 사람이 액세스 할 수 있음을 의미하고, private은 동일한 클래스의 구성원 만 액세스 할 수 있음을 의미하며 보호됨은 하위 클래스의 구성원도 허용됨을 의미합니다. 그러나 각 언어는 이것에 자신의 것을 추가합니다. 예를 들어 C ++를 사용하면 비공개로 상속 할 수 있습니다. Java에는 기본 (패키지) 액세스 수준도 있으며 내부 클래스 등에 대한 규칙이 있습니다.
위와 같지만 질적으로 :
private - least access, best encapsulation
protected - some access, moderate encapsulation
public - full access, no encapsulation
액세스 권한이 적을수록 객체에서 누출되는 구현 세부 정보가 줄어 듭니다. 이러한 종류의 누출이 적다는 것은 객체의 클라이언트를 손상시키지 않고 객체가 구현되는 방식을 변경하는 측면에서 더 많은 유연성 (일명 "느슨한 결합")을 의미합니다. 이것은 이해해야 할 진정으로 근본적인 것입니다.