Open Do-hyun-Kim opened 1 year ago
접근 제어자는 코드를 작성하는 한 파일에서 다른 파일에 있는 코드에 대한 접근을 명시적으로 작성하여 이를 관리하는 것인데, module과 source file에 따라 접근할 수 있음
entity : 접근 제어자를 작성할 수 있는 property, method, class, struct 등의 집합
open(가장 적은 제약)
public
internal - 기본 접근 권한
class SomeClass {
public init() {}
}
fileprivate
private(가장 높은 제약)
open class SomeOpenClass {}
public class SomePublicClass {}
public struct SomeStruct {}
public enum SomeEnum {}
internal class SomeInternalClass {}
fileprivate class SomeFilePrivateClass {}
private class SomePrivateClass {}
접근 제어자는 모듈과 소스파일 내에서 클래스나 구조체 등의 프로퍼티와 메서드에 허용되는 접근 범위를 정의한다.
import
키워드로 추가되는 것들이다.default
로 설정된다.
접근 제어자의 종류엔 어떤게 있는지 설명하시오.
Acceess Control
Acceess Control
은 다른 소스 파일 및 모듈의 코드에서 코드의 일부에 대한Access
(접근)을 제한 한다.class, struct, enum
뿐만 아니라, 해당 타입에 속하는properties
,method
,initializers
,subscripts
에 대해 특정Access
레벨을 지정 할 수 있다.Access Control 종류
open
접근자는 선언한 모듈(Framework)
이나 다른 모듈(Framework)
에서도 접근이 가능하다.open
접근자 같은 경우 선언한 모듈Framework
외부에서 오버라이드와 서브클래싱이 가능하다.JennyFoundation
내부에open
접근자로 선언된Jenny
클래스JennyFoundation
외부에open
접근자로 선언된Jenny
클래스를 상속 받은man
클래스public
접근자는 선언한 모듈(Framework)
이나 다른 모듈(Framework)
에서도 접근이 가능하지만open
접근자와 다르게 선언한 모듈 외부에서는 오버라이드, 서브클래싱이 불가능하다.JennyFoundation
내부에public
접근자로 선언된Human
클래스JennyFoundation
외부에public
접근자로 선언된Human
클래스를 상속 받은Girl
클래스internal
접근자는 기본 접근 레벨로 아무 접근자를 선언하지 않을 경우internal
로 간주됩니다.internal
은 모든 소스 파일 내에서만 사용되지만, 해당 모듈 외부의 소스파일에서는 사용이 불가능 합니다.JennyFoundation
내부에internal
접근자로 선언된Computer
클래스JennyFoundation
외부에internal
접근자로 선언된Computer
클래스를 사용하게 되면fileprivate
접근자는 특정Entity
를 선언한 파일 내에서만 사용이 가능하다.internal
로 접근하게 되면 오류가 발생한다fileprivate
로 선언된 접근자에 접근하기 위해서는fileprivate
접근자 또는private
접근자를 사용해서 접근해야 한다.JennyFoundation
내부에fileprivate
접근자로 선언된Document
클래스에 접근하게 되면JennyFoundation
내부에fileprivate
접근자로 선언된Document
클래스를private
,fileprivate
접근자로 접근하게 된 경우private
접근자는 5개의 접근자중 가장 제한적인 접근자로 특정Entity
사용을enclosing
선언과 동일한 파일에 있는 해당 선언의extension
으로 제한 할 수 있다.private
접근제어자를 사용하면 단일 정의 내에서만 사용이 가능하기에 특정 기능 조각의 구현 상세 내역을 숨길 수 있다.private
접근자를 부여하는 경우 인스턴스도 만들어지지 않는다 주로 SingleTone Pattern 을 사용할 경우 지정 이니셜 라이저에private
접근자를 부여한다.JennyFoundation
내부에private
접근자로 선언된Cipher
클래스를 다른 클래스에서 접근하게 되는 경우 발생하는 오류private
키워드로 선언된 클래스는extension
내부에서는 접근이 가능하다. 하지만 반드시 같은 소스 파일 내에서extension
을 사용해야 접근이 가능하니 주의해야한다.📝 참고 자료