擴充方法使你能夠向現有類型“添加”方法,為目标資料類型追加方法
而無需建立新的派生類型,重新編譯或以其他方式修改原始類型。擴充方法是一種特殊的靜态方法
但可以像擴充類型上的執行個體方法一樣進行調用
擴充方法的實作都是靜态類的靜态函數,第一個參數是調用擴充方法的對象,在類型前加this來辨別。
1.此方法必須是一個靜态方法
2.此方法必須放在靜态類中
3.此方法的第一個參數必須以this開頭,并且指定此方法是擴充自哪個類型
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAnYldHL0FWby9mZvwFN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcV2Zh1Wa9M3clN2byBXLzN3btgHL9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cGcq5iNygzN1gTMzQWN5gzMwIjNzYzX3MzM0MTMyAzLcFTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.jpg)
2.擴充方法中的this後面的參數不屬于方法的參數,本例是無參數,this後面的double是指明擴充方法擴充自何種類型
3.如果擴充方法和執行個體方法具有相同的簽名,則優先調用執行個體方法
4.擴充自父類上的方法,可以被子類的對象直接使用
5.擴充自接口上的方法,可以被實作類的對象直接使用
6.擴充方法最終還是被編譯器編譯成:靜态類.靜态方法(),doubleExtension.roud(),這是它的本質.
1、将執行個體方法調用在編譯期改變為靜态類中的靜态方法調用,實際上,它确實擁有靜态方法所有具有的所有功能。