在類中聲明但不依賴于該類的任何特定實例化的面向對象的計算機編程方法稱為靜態方法。大多數編程語言在方法聲明中包含關鍵字static,使方法成為靜態方法。這些方法嚴格屬于它們所包含的類而不是從該類實例化的任何對象...
在類中聲明但不依賴于該類的任何特定實例化的面向對象的計算機編程方法稱為靜態方法。大多數編程語言在方法聲明中包含關鍵字static,使方法成為靜態方法。這些方法嚴格屬于它們所包含的類而不是從該類實例化的任何對象。它們通常被稱為類方法。類的字面名稱通常用于訪問靜態方法,而不是用實例化對象的名稱來引用它。Java允許使用對象名來引用這些方法,但是強烈建議不要這樣做。如果使用對象名,閱讀代碼的人可能會將其中一個方法與實例方法混淆。靜態方法通常用于不依賴于任何特定類的實例變量的實用程序類中。當程序員需要訪問方法但無需訪問該方法時,也會使用靜態方法實例化它所包含的類。實用程序類通常不會實例化為對象。實用程序方法通常不需要修改對象信息。來自java.lang.math類的方法,例如pow(),實例方法可以直接訪問實例變量、靜態變量、實例方法,和靜態方法。靜態方法不能直接訪問實例變量和實例方法。由于實例方法比靜態方法更容易訪問類成員,實例方法是常規類中通常使用的方法類型,靜態方法的一個主要缺點是在使用多態性的情況下繼承只要父靜態方法未聲明為final,就可以在子類中對同一子靜態方法進行編碼,就好像它被重寫一樣。這在技術上稱為隱藏而不是重寫,因為靜態方法無法重寫。使用hidden時,如果使用類名訪問父靜態方法,將使用父方法。如果使用對象名稱訪問重寫的子靜態方法,則將使用重寫的子方法。當子對象作為父對象上推時,會出現問題。在這種情況下,對向上轉換子靜態方法的調用將使用父方法而不是預期的子方法。對于真正的多態性,子方法將是在上轉換后激活的方法
-
發表于 2020-08-06 18:13
- 閱讀 ( 698 )
- 分類:電腦網絡