封装,继承,多态

1.1字节:8bit = Byte :1B

1KB = 1024B
1MB= 1024KB
内存地址
只有类才是引用类型,其他都是值类型
类调用类方法
dynamicType:动态类型,获取调用对象的类型
通过类名调用类方法

两种调用:
1).通过函数名调用,带.
2).通过类名调用

2.public 比 internal更广
public可在其他应用中使用
private :在文件

  1. set:设置值
    get:取值

4.sqrt : 开平方根
5.协议(protocol):提供约束,将不同类按行为分类
继承(Inheritance):主要目的是重用代码,父类给子类提供公共代码
6.面向对象的三大特征:
1).封装
2).继承
3).多态
7.访问权限控制:
默认为internal: 在当前应用或模块可见
public:在模块、Framework(框架)外可见
private:只能在当前文件中使用
成员的权限不可能超过所在类的权限

  1. 存储属性:willSet,didSet
    var name: String! {
    //将值存入name之前调用
    willSet(newValue) {
    print("(name) : (newValue)")
    }

     didSet {
         print("\(name)")
     }
    

    }

    计算属性:
    var area: Double { //记住:是var,而不是func
    // return width * height

     get {
         return width * height
     }
     
     set {
         width = sqrt(newValue)
         height = sqrt(newValue)
     }
    

    }

9.继承:
1).具备父类的所有属性和方法
2).在父类基础上拓展
3).可重新定义父类的一些功能
4).最多只有一个父类
重写(覆盖)父类的方法需要添加override:
override func eat( ) {
print("Dog eat( )")
}

10.多态:
相似的类型,结果不同:
var a = Animal()
a.eat()

a = Dog()
a.eat()

a = Cat()
a.eat()
    
结果:Animal eat()
          Dog eat()
          Cat eat()

11.两种水果相加:
Banana:
class Banana{
var m1:Double = 0
var colour:String = "yellow"
}

Apple:
class Apple{
var m2:Double = 0
var colour:String = "red"
}

Fruit:
class Fruit{
var weight:Double = 0

}

func +(left:Fruit,right:Fruit) -> Fruit {
let fruit = Fruit()
fruit.weight = left.weight + right.weight
return fruit

}

main:
let m1 = Fruit()
m1.weight = 20
print(m1.weight)

let m2 = Fruit()
m2.weight = 30
print(m2.weight)

let m3 = m1 + m2
print(m3.weight)

你可能感兴趣的:(封装,继承,多态)