1.1字节:8bit = Byte :1B
1KB = 1024B
1MB= 1024KB
内存地址
只有类才是引用类型,其他都是值类型
类调用类方法
dynamicType:动态类型,获取调用对象的类型
通过类名调用类方法
两种调用:
1).通过函数名调用,带.
2).通过类名调用
2.public 比 internal更广
public可在其他应用中使用
private :在文件
- set:设置值
get:取值
4.sqrt : 开平方根
5.协议(protocol):提供约束,将不同类按行为分类
继承(Inheritance):主要目的是重用代码,父类给子类提供公共代码
6.面向对象的三大特征:
1).封装
2).继承
3).多态
7.访问权限控制:
默认为internal: 在当前应用或模块可见
public:在模块、Framework(框架)外可见
private:只能在当前文件中使用
成员的权限不可能超过所在类的权限
-
存储属性:willSet,didSet
var name: String! {
//将值存入name之前调用
willSet(newValue) {
print("(name) : (newValue)")
}didSet { print("\(name)") }
}
计算属性:
var area: Double { //记住:是var,而不是func
// return width * heightget { 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)
网友评论