일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CoreLocation
- UIAlertAction
- weak var
- WeatherManager
- Protocol
- 한국어 개인정보처리방침
- MKMapViewDelegate
- addannotation
- 클로저의 캡슐화
- 러닝기록앱
- App Store Connect
- 러닝타이머
- weatherKit
- Startign Assignments
- Required Reason API
- 영문 개인정보처리방침
- dispatchsource
- xcode로 날씨앱 만들기
- Xcode
- font book
- RunningTimer
- SwiftUI Boolean 값
- 서체관리자
- Timer
- MKMapItem
- UICollectionViewFlowLayout
- swift
- CLLocationManagerDelegate
- AnyObject
- 단일 책임원칙
- Today
- Total
VesselWheel
protocol 본문
import UIKit
/*
protocol
가상함수 : 선언부만 있고 구현부(몸통:body) 가 없는 함수
(cf.추상메소드) 본체
특징 : 다중 상속이 가능함 여러 protocol을 한 번에 상속(확장)할 수 있음
*/
// property : get, set
protocol Talkable{
var lang: String{get} // 읽기
var topic: String{get set} // 읽고 씀
// 가상함수: 선언부만 있고 body가 없는 함수
func talk()
}
protocol Runnable{
func run()
}
// Person은 두 개의 protocol을 다중상속하고 있음
struct Person: Talkable, Runnable{
var lang: String // property 를 준수해야 함
var topic: String // property 를 준수해야 함
func talk(){
print("말을 합니다")
}
func run(){
print("달립니다")
}
}
var p1: Person = Person(lang:"Swift", topic:"포트폴리오제작")
p1.talk()
p1.run()
// overloading
// 같은 클래스 내에서 메소드 이름이 같은 경우,
// 매개변수를 다르게 해서 중복 오류가 일어나지 않도록 함
// overriding
// 상속 관계에 있을 때
// 부모클래스로부터 물려받은 자식클래스에 있는 메소드의
// 구현부를 자식클래스에 맞는 형태로 변경하는 것 (재정의)
// 자식클래스의 메소드의 선언부를 부모클래스에 있는
// 메소드의 선언부와 똑같이 함
// overloading
class ParentA{
func displayName(name: String){
print("parent name : \(name)")
}
func displayName(name: String, age: Int){
print("parent name : \(name)")
print("parent age : \(age)")
}
}
var pA: ParentA = ParentA()
pA.displayName(name: "장보고")
pA.displayName(name: "윤봉길", age:30)
class ChildA: ParentA{
// method overriding : 메소드 재정의(body)
override func displayName(name: String){
print("child name : \(name)")
}
}
var chA: ChildA = ChildA()
chA.displayName(name: "장보고")
chA.displayName(name: "윤봉길", age:30)
class GrandChildA: ChildA{
override func displayName(name: String, age: Int){
print(" 손자 name : \(name)")
print(" 손자 age : \(age)")
}
}
var gchdA: GrandChildA = GrandChildA()
gchdA.displayName(name: "손자")
gchdA.displayName(name: "손자", age: 12)
'Xcode Study' 카테고리의 다른 글
형변환 : Type Casting(2) (1) | 2023.10.19 |
---|---|
형변환 : (data) type casting (1) | 2023.10.19 |
Optional Chainnig () (0) | 2023.10.19 |
구조체, 열거형, 클래스의 차이 (0) | 2023.10.19 |
열거형 : Enum(Enumeration) (0) | 2023.10.19 |