Skip to content

Commit 750db6c

Browse files
committed
update classes code, add inheritance and polymorphism
1 parent 8f79186 commit 750db6c

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

Swift Language/Classes/Classes.playground/Contents.swift

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ class Expert{
3434
func addNewLike(){
3535
likes += 1
3636
}
37+
38+
func getName() -> String{
39+
return "Expert name \(name)"
40+
}
41+
3742
}
3843
// create objects from Expert class
3944
var expert1 = Expert(name: "Omar", bio: "IOS Developer", likes: 0)
@@ -49,3 +54,50 @@ expert1.addNewLike()
4954
expert1.addNewLike()
5055
expert1.likes
5156
expert2.likes
57+
58+
59+
class Developer : Expert {
60+
var arrProgLanguaes : [String]
61+
init(name: String, bio:String, likes: Int, arrProgLanguaes : [String]) {
62+
self.arrProgLanguaes = arrProgLanguaes
63+
super.init(name: name, bio: bio, likes: likes)
64+
}
65+
66+
override func getName() -> String {
67+
return "Developer name = \(name)"
68+
}
69+
70+
71+
}
72+
73+
class Lawyer : Expert {
74+
var numberOfCases : Int
75+
init(name: String, bio:String, likes: Int, numberOfCases :Int) {
76+
self.numberOfCases = numberOfCases
77+
super.init(name: name, bio: bio, likes: likes)
78+
}
79+
80+
override func getName() -> String {
81+
return "Lawyer name = \(name)"
82+
}
83+
84+
}
85+
86+
var developer1 = Developer(name: "Ali", bio: "IOS Developer", likes: 10, arrProgLanguaes: ["Swift","Objective-C"])
87+
developer1.name
88+
developer1.addNewLike()
89+
developer1.likes
90+
var lawyer1 = Lawyer(name: "Salem", bio: "", likes: 8, numberOfCases: 12)
91+
lawyer1.likes
92+
//print(developer1.getName())
93+
//print(lawyer1.getName())
94+
95+
var arrExpers : [Expert] = [developer1, lawyer1]
96+
for expert in arrExpers{
97+
print(expert.getName())
98+
if let developer = expert as? Developer{
99+
print(developer.arrProgLanguaes)
100+
}else if let lawyer = expert as? Lawyer {
101+
print(lawyer.numberOfCases)
102+
}
103+
}

0 commit comments

Comments
 (0)