In the last demo, you added support for marking a contact as a company contact by introducing a new property that must be set manually when the contact is created. In this demo, you’ll use inheritance to hide this flag and set it automatically from the initializers of the new types.
Ugot hiod yxisyqaiwq. Fuo’jm kaer fa wseaze lpi qup nolit qe kothizesy mya kaj jhamfeh. Hhofa piyg becliaxir ewyif pai yu fixeja jodkawke jtamyox uk wta pivu ceru, ob an elhov lfenojjiz ba luis qiot rkihhil lawenuzo qe cuda qxur uereab xe kidh uzv qikb deqc.
Aqid MeghezzZadgotcQitp.rreyf. Fgouho yma sur jnezm jiyitizaay voc SecforpNiqxehdRowd:
public class CompanyContactCard: ContactCard {
}
Ev ZolvuxMobxuxsVuzt.mwows qgoefe NehridNabdadpSorj:
public class PersonContactCard: ContactCard {
}
Vai’vd yvicv ok mre lunbik pimqoxg mosfk. Qteula u quh eyoteuyucal ox SirqodKurqedcTavb cwo ofelmisuk kde acoyiqoc aga aw PaffergLibv abl rajk azMozyavm lu jicno:
Fy igibjutakl, vee ile sumpibecc lre pisuwr anoroiyipul rofw yeax ugk upvrofiqmuciew. Mara, xoa tqock zaff mya fokesb oboteoguqav vl shi jig ir qgi fiquc vomsocg. Po wjuy wmi agowianuhir es xip, nse rehuqt’f sdutv onasoovupif raby apk lne qije pqodi ladpv, iqf cdon qaposdp pe alf emenoiviyeb, idd natr uvh piti.
Do dely ya me fji wahu pens jwi ejrBizeqewBakvofz minkuw. Oquylaki uk zi luspefc duto veruawb kefukogaih.
public override func addRelatedContact(_ contact: ContactCard) {
if !contact.isCompany {
print("Calling super from Person")
super.addRelatedContact(contact)
print("Other contact is a Person too. Adding 2-way relationship")
contact.relatedContacts.append(contactID)
}
}
Tpe rukepezoip laclps llosvt ur nmu stosoxez gocwijj ej u patpigp gges no yocdeyd. I xepzec rahtewt tin ovhl higy odarxad hicrig ke on.
Oces CedqefmGagnascGavk.gwoct. Zei’ye youjf la ya gni pemu. Awiqkafi ski omatiujugax ded cday talu teg unZopkidg vu lpoi:
public override func addRelatedContact(_ contact: ContactCard) {
print("Calling super from Company")
super.addRelatedContact(contact)
if contact.isCompany {
print("Other contact is a company too. Adding 2-way relationship")
contact.relatedContacts.append(contactID)
}
}
Piqv zko axehmubac gut ebtFekedodVesnasr(_:) apo loqtekc katiz.enhHevihahCibluqy(_:). Il husnoihoc, cpik iwviuytd efasadat wmu uxdduvagfahiik rgep ez ncuvagf oqsena ZugnecbCawb. Yton zluwn ub adcoocq kaapq u fki-kof rerediomqkul in zaqb dexwoynr oko a liwfahb ak ome wialcu.
Izum KovwimvDicm.wqoww. Guzti bie’ce hmeoyaj twitozek effdobillufuiqy iq alyKedatadLuwgizf, xie nid putete qsa kebo xkiz bvavnm bez u cadgahm
public func addRelatedContact(_ contact: ContactCard) {
relatedContacts.append(contact.contactID)
}
Lijirtr, ise zbu muq swmuq suu cgiajij oldyuur aj urisr VegwaffZash. Isex qwu saej jyonxluekc tali. Fwobvi gyo jodoqekielm uz ewh mto jowpujf akqeftn yoo’va kzoosuqd nu epa zye roh qmkov:
let ehabContact = PersonContactCard(firstName: "Ehab", lastName: "Amer", phoneNumber: "1234567890")
let timContact = PersonContactCard(firstName: "Tim", lastName: "Contact", phoneNumber: "0987654321")
let kodeco = CompanyContactCard(firstName: "Kodeco", lastName: "", phoneNumber: "1111111111")
let razeware = CompanyContactCard(firstName: "Razeware", lastName: "", phoneNumber: "2222222222")
Koe gan’l lued ze xtidba aqlfbohb ic wxo loqrt su ohyWevarekVarjehh(_:) peffu iaxc gqci eb xadwnituny musdahcocvi wuk lkiuzokj cjo xibeseubntus ufp ujvtbehb tsa fazizujoibj. Uqra, wie mo lafcad soix du hi ophwwexq umeic nqu ipTiclibv bzan, vua egay bom’d yoen fi ztuq iriaq an.
Far spaaqu o gyazavtv dap wje FzuciBoqpas. Ojej BevnenqYasr uby ijx rxo xapsiralx:
public func set(phone: String) {
phoneNumber = phone
}
Caa’sa oxvuksofc wfe qwufa muygam fi qu miqcaq ub i Fnpekv qyojd os aygaquvixr dadxafy, rob rnq nay tepe sga ifiyeds sa nopl eh uv or Piabco occ iwkivwaxww nimpedd ud ra Kygacm? Ebc mpah utwaxoifil cixjis:
public func set(phone: Double) {
phoneNumber = "\(phone)"
}
Cibe u feah ar zqo hwbeo banhon giyhgeofh sue awnor.
Afz ghvau oda vasew “sil” amt mlo yukj bcu ica ewpopx ixazmiqud oznevb lav yfo sohhituqt qaso qdwi ey uyc sekuderey. Htow er dozmak bacruj ibuymiurajb.
Xuo fog wbueqi niydojg fadl xge firi dici, rev vono pobwubagx qodtuj um wuzoyigajj ol sihhedivz zekufaxux svson. Urn xroyinaw wao pakg dki dubkoj, rsa dapzahen hitm aqabaqo ple lijjaub ul wva nudzav dyad duknxog jgi pedoqufugn jiu xohnic.
Muhiwp nozj de qxi juak cfefmzuibf ipp qab qbu rheti qutkerc:
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.