多态
//多态
class Media{
var name: String
init(name: String) {
self.name = name
}
func show() {
print("name is \(name)")
}
}
class Movie: Media {
var director: String
init(name: String, director: String) {
self.director = director
super.init(name: name)
}
override func show() {
print("movie name is \(name), director is \(director)")
}
}
class Song: Media {
var artist: String
init(name: String, artist: String) {
self.artist = artist
super.init(name: name)
}
override func show() {
print("song name is \(name), artist is \(artist)")
}
}
let items = [
Movie(name: "A", director: "B"),
Song(name: "C", artist: "D")
]
print(type(of: items))
//Array<Media>
向下类型转换 as
//向下类型转换 as
for item in items {
if let real = item as? Movie {
real.show()
//movie name is A, director is B
}
}