클래스(Class or type) 메서드
호출 방법
클래스명.클래스메서드()
특징
Type Method, Class Method는 클래스레벨에서 동작
즉, 클래스가 호출 해야함 인스턴스 XX
이렇게 만들어진 Class Method는 자식 클래스에서 override가능
Override : 슈퍼클래스들 또는 부모 클래스들 중 하나에 의해 이미 제공된 메소드를 특정한 형태로 구현하는 것을 제공
클래스 메서드 = 클래스(Human)가 호출
init()
인스턴스를 초기화 하기위해 필요함
직접 호출하지 않으며 인스턴스가 만들어지면서 자동 호출
초기값 생략 가능 Why? init 생성자가 초기화를 하기 때문
init(Myheight : Int, Myweight : Double)
{
height = Myheight //property를 초기화 시키는 생성자
weight = Myweight //property를 초기화 시키는 생성자
} //designated initializer
self
현 클래스 내부 메서드, property를 가리킬 때 앞에 self.을 붙임
매개변수와 구분하기 위해선 self가 필수!!
class Human
{
var weight : Double //property
var height : Int //property
func play() //instance Method
{
print("키 : \(height), 몸무게 : \(weight)")
}
init(height : Int, weight : Double)
{
self.height = height //property를 초기화 시키는 생성자
self.weight = weight //property를 초기화 시키는 생성자
} //designated initializer
computed propery
- propery가 설정되거나 검색되는 시점에서 계산, 파생된 값
값을 리턴하는 getter
값을 대입하는 setter
var tolb : Double //computed property
{
get //setter가 없을 시 get 생략 가능 → var tolb : Double { return kg / 2.2 }
{ return kg / 2.2 }
}
var tolb : Double
{
get //setter가 없을 시 get 생략 가능 → var tolb : Double { return kg / 2.2 }
{ return kg / 2.2 }
set(again_Kg) //값과 매개변수가 같을 시 생략 가능 set { kg = again_Kg * 2.2 }
{ kg = again_Kg * 2.2 }
}
Method overloading
매개변수의 개수와 자료형이 다른 같은 이름의 함수를 여러 개 정의
매개변수가 다른 두 생성자를 통해 두가지 방법으로 인스턴스를 만듦
다양한 방법으로 객체, 인스턴스를 만드기 위함
Failable Initializers (init?)
let myImage: UIImage = UIImage(named: "apple.png")!
apple.png 파일을 잘못입력 했거나 없을 시 nil
? -> 값이 없을 수도 있는 것을 알림 (옵셔널 값 리턴)
옵셔널을 언래핑하기 위해 “!”를 붙인다
오류 상황에 nil를 리턴할 조건문이 있어야한다
상속
상속된 클래스는 부모 클래스의 모든 기능을상속받으며, 자신만의 기능을 추가
상속받은 클래스들을 하위 클래스(subclass) 또는자식 클래스(child class)
하위 클래스가 상속받은 클래스는 부모클래스(parent class) 또는 상위 클래스(superclass)
단일 상속 (single inheritance)
Swift에서 하위 클래스는 단 하나의 부모 클래스만 상속받을 수있음
class 자식 : 부모명, 프로토콜명
{
//부모 클래스는 하나만 가능
// 콜론 다음이 여러 개이면 나머지는 프로토콜
}
상속은 클래스만 가능하다