스위프트 계승에 대한 간단한 정리.
프로토콜 이니셜 및 클래스 이니셜
지난번과 마찬가지로 반
MySuper
에 자신의 이니셜을 추가했다.protocol
에서 선언한 초기 기록기init(srt)
는 수식자required
가 필요하다.MySuper.swift
import Foundation
class MySuper:MyProtocol{
//プロトコルに宣言したinit(str)
required init(str: String) {
NSLog("MySuperクラスのrequired init(%@)", str)
}
//デフォルトのイニシャライザinit()
init()
{
NSLog("MySuperクラスのデフォルトinit()")
}
func protocolFunction01() {
NSLog("MySuperクラスのFunction01")
}
func protocolFunction02() {
NSLog("MySuperクラスのFunction02")
}
}
거기서 아이급MyParent
을 더 만든다.별말씀이지만 다음과 같은 오류가 발생할 수 있습니다.
Overriding declaration requires an 'override' keyword
보아하니
override
수식부적이 필요할 것 같다.따라서
override
수식자를 적당히 첨가한다.MyParent.swift
import Foundation
class MyParent: MySuper{
required init(str: String)
{
super.init(str: str)
NSLog("MyParentクラスのrequired init(%@)", str)
}
override init()
{
super.init()
NSLog("MyParentクラスのoverride init()")
}
}
클래스 인스턴스화
이제 드디어
ViewController
, 실례화MyParent
류.ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var myParent:MyParent = MyParent()
}
}
콘솔의 결과는 예상과 같다.참고로
String
를 매개 변수init(str)
로 초기화한 상황입니다.ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var myParent:MyParent = MyParent(str: "ほげほげ")
}
}
콘솔 결과는 2단계입니다.
그리고 자류
MyChild
를 한층 더 만들어 보려고 한다.MyChild.swift
import Foundation
class MyChild: MyParent{
required init(str: String)
{
super.init(str: str)
NSLog("MyChildクラスのrequired init(%@)", str)
}
override init()
{
super.init()
NSLog("MyChildクラスのoverride init()")
}
}
ViewController.swiftimport UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//var myParent:MyParent = MyParent(str: "ほげほげ")
var myChild:MyChild = MyChild(str: "ふがふが")
}
}
콘솔의 결과는 세 단락이 고르지 않다.여기까지 예상대로w
Reference
이 문제에 관하여(스위프트 계승에 대한 간단한 정리.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tajihiro/items/3400e764d9895b248bde텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)