欢迎大家评论,问问题,质疑
import Foundation
class Dog : NSObject {
//重写父类的方法 override
override init() {
}
}
class Person : NSObject {
//存储属性
var age : Int!
//计算属性
var fatherAge : Int {
set {
self.age = newValue - 20
}
get{
return self.age + 20
}
}
//lazy
var dog : Dog = Dog()
//只读属性
var motherAge : Int {
get {
return 20
}
}
//类属性
static var gender : Bool! = true
//对象方法
func sayHellow(){
}
//类方法
static func eat(){
}
//初始化
init(age : Int ) {
self.age = age
}
}
//结构体与类的区别
//1.结构体不能继承,类可以继承
//2.结构体是值类型,类的引用类型
//举下面这个例子
struct mao {//结构体
var name : String!
init(name : String){
self.name = name
}
}
//人 猫
var p : Person = Person(age: 12)
let p1 : Person = p
p1.age = 13
print(p.age)
var m : mao = mao(name: “花花”)
var m1 = m
m1.name = “喵喵”
print(m.name)
//extension
//在OC中,用extension可以扩充加号方法(调用的时候会先调用父类的),减号方法(先调用扩展的方法)
extension Person{
func study(){
print(“学习”)
}
}
p1.study()
//重写父类的方法
class Girl : Person{
override func sayHellow() {
print(“美女,你好”)
}
}
let girl = Girl(age: 16)
girl.sayHellow()
//协议
//必须实现的
protocol PersonProtocol {
func eat()
static func sayGoodBye()
var baby : String? {set get}
static var Girl : String? {get}
}
//不是必须实现的 两个关键字 @objc optional
@objc protocol MenProtocol {
optional func sayHi()
}
class Boy: NSObject,PersonProtocol,MenProtocol {
func eat() {
}
static func sayGoodBye() {
}
var baby : String? {
set {
}
get{
return "baby"
}
}
static var Girl : String? {
get {
return "girl"
}
}
func sayHi() {
}
}
//闭包
typealias block = ((Int,Int)->Int)
var myBlock : block! = nil
//实现
//一般用这个写法
myBlock = {(a : Int,b : Int)->Int in
print(“你打我呀”)
return 1
}
//调用
myBlock(1,2)
//$0代表第一个参数
myBlock = {
return $0 + $1
}
print(myBlock(1,2))