아이폰의 기능
공통 특성 -> 아이폰 종류, 카메라 줌 상태, 홈버튼 유무, 제조일자, ..
공통 기능 -> 송신, 수신, 와이파이, 블루투스, 문자보내기 ..
관심있는 특성 -> 아이폰 종류, 카메라 갯수, 홈버튼 유무
관심있는 공통 기능 -> 와이파이, 블루투스, 비행기모드
추상화를 걸쳐서 타입의 기본 골격을 설계한다. 인스턴스가 일을 실행하면서, 인스턴스끼리 정보를 주고 받거나 서로 일을 시키는 것이 프로그램의 전체 흐름이 되겠다.
모든 타입에 적용되는 접근 수준의 규칙은 '상위 요소보다 하위 요소가 더 높은 접근 수준을 가질 수 없다'이다.
비공개 접근 수준으로 정의한 구조체 내부의 프로퍼티로 내부 수준이나 공개수준을 갖는 프로퍼티를 정의 할 수 없다.
또, 함수의 매개변수로 특정 접근 수준이 부여도나 타입이 전달되거나 반환될 수 없다.
private로 접근제어 수준을 설정하면 파일내부에 있더라도 다른 클래스에서 접근 할 수 없다.
단, Extensoin(확장)코드가 있는 경우에는 private 접근제어 수준이라 할 지라도 접근할 수 있다.
{접근수준}(set) 처럼 표현하면 설정자의 접근수준만 더 낮도록 지정해 줄 수도 있다..
설정자의 접근 수준 제한은 속성,서브스크립트, 변수 등에 적용될 수 있다.
test.fileprivateVariable에 2의 값을 set해주려 시도하면
setter에 접근할 수 없다는 에러가 표시된다.