self.屬性/方法 調(diào)用

self一般是指當(dāng)前執(zhí)行或所有對象

self.屬性/方法 調(diào)用優(yōu)先級: (先private -> public)
1.當(dāng)代碼所在類的 private屬性/方法
2.子類->超類

在繼承環(huán)境中:
superClass中調(diào)用:
self.屬性/方法: 先調(diào)用代碼當(dāng)前類的私有

Bug:
如果superClass中有private 屬性/方法 和subClass 屬性/方法 同名,那就調(diào)用superClass自己的private 屬性/方法

解決:
private 屬性/方法 添加前綴 : 如 p_ 屬性/方法

import Foundation

print("Hello, World!")

class Chang {
    var height:Double
    private var width:Double {
        willSet{
            print("super width willSet")
        }
    }
    init(height:Double,width:Double = 3) {
       
        self.width = width
        self.height = height
    }
    
    func argumentFunc(_ test:Double){
        self.width = test
        
        self.testFunc()
    }
  
    
    private func testFunc(){
        print("super testFunc")
    }
}


class Zheng:Chang{
    var width: Double = 15 {
        willSet{
            print("self width willSet")
        }
    }
    override func argumentFunc(_ test:Double){
        super.argumentFunc(test)
    }
    
    func testFunc(){
        print("super testFunc")
    }
}

輸出:

var test2 = Zheng(height:6,width:4)
print(test2.width)
test2.width = 5
print(test2.width)
test2.argumentFunc(6)
print(test2.width)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift中Self的使用 用于消除訪問屬性,調(diào)用方法時所產(chǎn)生的歧義。 當(dāng)函數(shù)的參數(shù)名和自身的屬性名同名時,例如:...
    fever105閱讀 8,277評論 7 7
  • 是什么 相信大家都知道self這個關(guān)鍵字的具體作用,它跟OC里的self基本一樣。但是對于Self來說...(WT...
    周二可閱讀 9,723評論 3 10
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,104評論 0 6
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,196評論 1 10
  • 7.6號第18天總結(jié) 今天媽媽和妹妹從湖北老家過來廣西看我。一大早8點到,本來說我去接的,公公說他去,他比較...
    win夏冰閱讀 216評論 0 0

友情鏈接更多精彩內(nèi)容