1、繼承
- LGMonkey繼承LGAnimal
- LGMonkey重寫了
leg
屬性、和eat
方法
class LGAnimal: NSObject {
var leg:Int {return 4}
func run(){
print("\(leg)只腳奔跑")
}
func eat(){
print("肉")
}
}
class LGMonkey: LGAnimal {
override var leg: Int {return 2}
override func eat() {
print("🍑")
}
}
複製代碼
2、協議
- 實現協議就必需要實現協議裏面的屬性,和方法
- 若是在
extension
中實現了sayHello
方法(屬性同理),LGTeacher
、LGStudent
中就能夠沒必要須實現sayHello
方法;反之若是extension
沒有實現,就必須在LGTeacher
、LGStudent
中實現
- 在結構體、類和
extension
中,協議屬性的實現有點不一樣
- 結構體:
var name: String
- 類:
var name: String = ""
- extension:
var name: String { return "dyz" }
- 父類擴展了這個協議
extension UIViewController: LGUIProtocol{ }
,子類就不能再擴展extension TableViewController: LGUIProtocol{ }
,會報錯哦'TableViewController' inherits conformance to protocol 'LGUIProtocol' from superclass here
protocol LGProtocl {
/// 協議屬性
var name: String {get}
/// 協議方法
func sayHello()
}
extension LGProtocl {
var name: String {
return "hello"
}
func sayHello() {
print("extension hello")
}
}
/// LGTeacher結構體來實現協議
struct LGTeacher: LGProtocl{
var name: String
// func sayHello() {
// print("你好")
// }
}
struct LGStudent: LGProtocl {
var name: String
// func sayHello() {
// print("別煩我,我要學習POP")
// }
}
class Person: LGProtocl {
var name: String = ""
func sayHello() {
print("你好")
}
}
extension UIViewController: LGProtocl {
var name: String {
return "dyz"
}
}
複製代碼