
1. 타입 캐스팅
- 부모 클래스로부터 상속된 자식 클래스는 자기 자신의 타입이기도 하면서, 동시에 부모 클래스의 타입이다. 이때문에 자식 클래스는 본래의 타입 대신 부모 클래스 타입으로 선언하여 사용할 수 있다.
2. 타입 비교 연산
- 변수나 상수 또는 인스턴스에 이 연산자를 사용하면 할당된 값을 비교하는 것이 아니라 타입이 일치하는지 여부를 비교하고 그 결과를 Bool 형태로 돌려준다.
인스턴스(또는 변수, 상수) is 비교대상 타입
3. 타입 캐스팅 연산
객체 as 변환할 타입
객체 as? 변환할 타입(결과는 옵셔널 타입)
객체 as! 변환할 타입(결과는 일반 타입)
4. Any, AnyObject
- 상속 관계에 있지 않아도 타입 캐스팅이 가능한 예외가 있는데 바로 Any, AnyObject 타입이다.
var list = [AnyObject]()
list.append(Vehicle())
list.append(Car())
list.append(SUV())
5. 초기화 구문
- 모든 저장 프로퍼티는 초기화되어야 하며 기본 초기화 구문을 사용할 때 저장 프로퍼티에 초기값이 지정되어 있어야 한다.
6. 초기화 메소드
- 초기화 메서드의 이름은 init을 사용한다.
- 매개변수의 개수, 이름, 타입은 임의로 정의할 수 있다.
- 매개변수의 이름과 개수, 타입이 서로 다른 여러 개의 초기화 메서드를 정의할 수 있다.
- 정의된 초기화 메서드는 직접 호출되기도 하지만, 대부분 인스턴스 생성 시 간접적으로 호출된다.