1. 成员与类的权限
- 权限:internal/pravite/public
- 默认为internal:在当前应用或模块可见
- pravite: 在当前文件中使用
- public: 在其他地方都可见
- 成员的权限不能超过类的权限
2. 类的封装
class hummen {//封装
var name : String = ""
var age : UInt = 0
private var weight : Double = 0
var height : Double = 0
}
var p3 = people()
p3.name = "李雪"
print(p3.name)
var p4 = p3
p4.height = 34
print(p4.height, p4.name)
class tangle {//可定义存储属性,也可定义计算属性
var height : Double = 0
var weight : Double = 0
var name : String!{
willSet(value){//储存属性
print("将\(name)设置为:(value)")
}
didSet{
print("已经设置为:\(name)")
}
}
var area:Double{//计算属性
set{
height = sqrt(newValue)
weight = sqrt(newValue)
}
get {
return height * weight
}
//return height * weight
}
func same() {
print("this is the same")
}
}
var t1 = tangle()
t1.height = 24
t1.weight = 5
t1.name = "张三"
print(t1.area)
3. 类的继承
- swift中类的继承是单继承,只有一个父类,也可以没有父类
- 可继承父类中所有的成员和方法
- 也可以重新构造父类的方法
class rectangle: tangle {//继承tangle
var width : Double = 0
func diffrent() {
print("this is diffrent")
}
override func same() {//重新构造父类的方法,需添加关键字override
print("this the same")
}
}
var re1 = rectangle()
re1.diffrent()
re1.same()
var re2 : tangle//声明为tangle类
re2 = rectangle()//re2实际为rectangle类,但是还是tangle类
var re3 = re2 as! rectangle//将re2强制转换为rectangle类
re2.same()
re3.diffrent()
4. 类的协议与扩展
4.1 协议的作用
- 将不同父类的类通过一些描述特征将其归为一类进行管理
协议的定义
protocol extra {
func condition()
}
协议的实现
class Clothes : extra{
func condition() {
print("Cloth is dry~")
}
}
4.2 扩展的作用
- 将已有的类型进行添加功能或是方法,也可以添加类的功能
- 不能创建存储属性,只能创建计算属性
//也可以给类添加功能,“类型”没有局限
extension Int{//给已有类型添加功能,扩展Int类型中的某些功能,包括方法
//var i = 123//不能创建存储属性,只能是计算属性
var i : Int{
return self * 2
}
func InfoPrint(number : Int, number1 :Int) -> Int {
return number * self + number1
}
}
var s = 123
print(s.i, s.InfoPrint(3, number1: 4))
extension Clothes {
func condition() {
print("Cloth is dry~")
}
}
5. 计算符重载
- 重新定义计算符,使其能在特定的函数中实现符号的功能
func 符号()->类型{}
网友评论