ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 접근레벨 및 이니셜라이저 관련
    Swift 2020. 11. 19. 15:36

    안녕하세요. 그린입니다!

    이번 포스팅에서는 현재 학습하다가 생각난점을 정리해보도록 하겠습니다.

    제 생각을 정리한 부분으로 다소 다르거나 맞지 않을 수 있으니 그런점 있으시면 알려주세요~!!

    1. 접근레벨

    swift에서는 기본적으로 5가지의 접근레벨이 있습니다.

     1) private

       : 가장 제한적으로 접근할 수 있는 범위는 해당 정의된 메서드 내에서 가능합니다. 즉 해당 중괄호 안에서만 접근할 수 있습니다.

     2)  fileprivate

       : private 다음으로 제한적이지만 해당 스위프트 파일에서만 접근이 가능합니다.

     3) internal

       : 기본적인 접근레벨로 접근레벨을 앞에 붙여서 설정하지 않고 생략한다면 다 internal입니다. 내부 소스파일에서 접근 가능합니다.

     4) public

       : 외부모듈에서도 접근이 가능하며 주로 프레임워크를 만들때 사용합니다. 같은 모듈에서만 오버라이드 될 수 있습니다.

     5) open

       : public과 동일하지만 차이점은 외부 모듈에서도 오버라이드 될 수 있습니다.

    -. 제한단계 : private > fileprivate > internal > public > open

     

    2. 이니셜라이저

     클래스를 생성하여 그안에 변수의 값을 초기화 시키는것과 이니셜라이저 Init()을 통해 정의를 하고 추후 인스턴스를 생성하였을때

     인자값으로 초기화값을 주어줄 수 있습니다. 아직 명확하게 정리가 되지 않지만 정리되는 부분을 코드로 나타내봅니다.

    class Test {
    	var green: Int = 100
    }
    
    let test:Test = Test()
    
    class Initial {
    	var green: Int
        init(green: Int) {
        	self.green = green
        }
    }
    
    let initialNumber: Int = 100
    let initial: Initial = Initial(green: initialNumber)

    위 두개의 차이점은 추후 유지보수 시 class Test는 수정 사항이 생기면 타입 자체를 건드려야하지만, 

    class Initial은 타입을 건들지 않고 인스턴스의 변수값만 변경하면 됨으로 유지보수 측면에서 효율적이다.

    가급적이면 정의된 타입은 건들지 않는것이 좋다.

     

    이렇게 이번 포스팅에서는 접근레벨과 이니셜라이저에 대해 학습해보았다. 조금 더 세부적인것들이 많지만 현재 이정도까지 정확하게

    이해하고 더 발전시켜볼 예정입니다.

    감사합니다!

    'Swift' 카테고리의 다른 글

    제네릭  (0) 2020.12.13
    프로토콜/구조체/클래스에 관하여  (0) 2020.11.23
    객체지향 프로그래밍 패러다임  (0) 2020.11.08
    랜덤함수  (0) 2020.11.04
    구조체와 클래스  (0) 2020.11.04
Designed by Tistory.