Swift (33) 썸네일형 리스트형 Swift 정리 : protocol(프로토콜) 특정 클래스와 관련없는 함수(메서드)들의 선언 집합 함수(메서드) 정의는 없음 protocol 프로토콜명{ //프로토콜 정의 프로퍼티명 메서드 선언 //메서드는 선언만 있음 } protocol 프로토콜명 : 부모1프로토콜, 부모2프로토콜{ // 프로토콜은 다중 상속도 가능 } protocol Runnable { //대리하고 싶은 함수 목록 작성, 정의 var x : Int {get set} //읽기와 쓰기 가능 프로퍼티(필수적으로 있어야 함) //{get}은 읽기 전용 func run() //메서드는 선언만 있음 } class Man : Runnable { //채택, adopt, 상속 부분 참고 var x : Int = 3 //준수, conform func run(){print("달린다~")} //준수,.. Swift 정리 : Type Property class SClass { var storedProperty = 2 static var storedTypeProperty = 1 static var computedTypeProperty: Int { //static이 붙으면 오버라이드 불가능 return 10 } class var overrideableComputedTypeProperty: Int { //class가 붙으면 오버라이드 가능 return 100 } } var x = SClass() print(x.storedProperty) print(SClass.storedTypeProperty) //static이 들어가면 클래스가 다룸 print(SClass.computedTypeProperty) print(SClass.overrideableCompute.. Swift 정리 : extension(익스텐션) class, struct, enum, protocol에 새로운 기능을 추가 extension은 하위 클래스를 생성하거나 참조하지 않고 기존 클래스에 메서드,생성자(initializer), 계산 프로퍼티 등의 기능을 추가하기 위하여 사용 클래스(구조체, 열거형, protocol)는 다음과 같은 형태로 확장(익스텐션)함 extension 기존타입이름 { // 새로운 기능 } extension Double { var squared : Double { //기존 Double형 구조체에 계산 프로퍼티 추가 return self + 1.0 } } let myValue: Double = 3.0 print(myValue.squared) //4.0 print(2.0.squared) //3.0 Swift 정리 : override : 부모와 자식에 같은 메서드가 있으면 자식 우선 부모와 자식에 display()라는 메서드가 있어서 Student클래스는 display() 메서드가 두 개임 Student클래스의 인스턴스 lee가 display()를 호출할 때, 자식클래스가 새로 만든 display() 메서드가 우선적으로 호출되려면 func 앞에 override키워드 씀 class Man{ var age : Int var weight : Double func display(){ print("나이=\(age), 몸무게=\(weight)") } init(age: Int, weight : Double){ //1 self.age = age self.weight = weight } } class Student : Man { var name : String override func display.. Swift 정리 : 스위프트 상속 class 자식:부모 { } 부모 클래스는 하나만 가능 콜론 다음이 여러 개이면 나머지는 프로토콜 class 클래스명:부모명, 프로토콜명1,프로토콜명2 {} 부모가 있으면 부모 다음에 표기, 프로토콜은 여러 개 사용 가능 부모가 없으면 바로 프로토콜명 표기 가능 상속은 클래스만 가능 class Man{ var age : Int var weight : Double func display(){ print("나이=\(age), 몸무게=\(weight)") } init(age: Int, weight : Double){ self.age = age self.weight = weight } } class Student : Man { //Man을 상속 받음 var name : String func displayS() .. Swift 정리 : method overloading : 생성자 중첩 매개변수의 개수와 자료형이 다른 같은 이름의 함수를 여러 개 정의 매개변수가 다른 두 생성자를 통해 두가지 방법으로 인스턴스를 만들 수 있음 class Man{ var age : Int = 1 var weight : Double = 3.5 func display(){ print("나이=\(age), 몸무게=\(weight)") } func display(age : Int){ //생성자 중첩 print("나이=\(age), 몸무게=\(weight)") } init(age: Int, weight : Double){ //1 self.age = age self.weight = weight } init(age: Int){ //생성자 중첩 self.age = age } } var kim : Man = Man(age.. Swift 정리 : computed property의 setter setter가 있으면 get{ }는 생략할 수 없음 매개변수명은 newValue가 기본, 이 경우 생략 가능 newValue가 아니라면 변수명을 써주어야 함 class Man{ var age : Int = 1 // stored property var weight : Double = 3.5 // stored property var manAge : Int{ //메서드 같지만 computed property get{ return age-1 } set(newValue){ //(newValue) 생략 가능 age = newValue + 1 } } func display(){ print("나이=\(age), 몸무게=\(weight)") } init(age: Int, weight : Double){ self.age .. Swift 정리 : stored property(저장 프로퍼티)와 computed property(계산 프로퍼티) computed property(계산 프로퍼티)는 property가 설정되거나 검색되는 시점에서 계산 또는 파생된 값이다. 계산 프로퍼티 내에는 값을 리턴하는 게터(getter) 메서드와 값을 대입하는 세터(setter) 메서드가 있다. class Man{ var age : Int = 1 // stored property var weight : Double = 3.5 // stored property var manAge : Int{ //메서드 같지만 computed property // get{ //getter만 있을 경우 생략 가능하다. return age-1 // } } func display(){ print("나이=\(age), 몸무게=\(weight)") } init(age: Int, weight.. 이전 1 2 3 4 5 다음