爲什麼我需要一個需要實例的方法?爲什麼我不能讓我所有的方法都是靜態的?爲什麼我需要一個需要實例的方法?
回答
爲什麼你不是想在你的程序的任何地方任何狀態?
你能想象如果沒有String實例,並且String上的所有內容都是靜態的嗎?你會如何表現兩個不同的角色序列?現在將相同的邏輯應用於其他代碼。
從根本上說,面向對象的語言與周圍狀態對象的思想構建的:的Book
一個實例是不一樣的的Book
另一個實例 - 每個Book
實例封裝它的名字,作者,出版日期等你將如何模型只有靜態方法,沒有實例?
當然,你可以讓所有的方法靜態的,一個Book
傳遞作爲一個需要使用狀態每次調用的第一個參數。在幕後,幾乎就像這樣的事情已經發生......除了你失去了多態,所以接口,抽象類等都沒用。不好。
我明白先生,非常感謝 – MahendraSK
因爲對象一起是狀態和行爲,封裝成一個組件。
如果您有單獨的實例,則表示它們每個都可能具有隨實例而異的私有數據。
靜態數據和方法在類級別共享。各個實例不能有不同的靜態數據。
靜態方法不能直接訪問對象內的成員變量 - 它們只能訪問靜態變量。
如果你有一個汽車類和一個靜態數據成員就像一個整數,你只能擁有一輛汽車,因爲你不能製造汽車的多個實例並獲得該變量的多個實例 - 你只能擁有單一的靜態。
每輛車不能有相同的車牌號碼,因此每輛車都需要自己的車牌變量。
與該變量一起工作的類中的方法需要非靜態才能直接在其上工作。
使用「Car」類的示例,您可能有一個名爲「startCar()」的方法。顯然,你希望這種方法只與一輛汽車的某個「實例」進行交互,而不是對你所有的汽車都是全球的。例如在Java中:
public class Car {
public void startCar() {
// code to start car
}
}
public class MyProgram {
public static void main(String[] Args) {
Car myFord = new Car();
Car myOpel = new Car();
myCar.startCar; // starts the Car "myCar" and leaves "myOpel" alone
}
}
這也是值得注意的是,靜態方法可以不利用它們所定義的類的實例變量。
- 1. 爲什麼eclipse需要一個名爲'main'的實際方法?
- 2. 爲什麼C++單例實例化需要do_nothing方法?
- 3. 爲什麼我需要顯式實例化一個對象?
- 4. 爲什麼我們需要addRequestHeader方法?
- 5. 爲什麼我們需要ContinueWith方法?
- 6. 爲什麼我們需要Buffer.isBuffer方法?
- 7. 爲什麼我需要我需要在子類中實現IDisposable()
- 8. 爲什麼一個amazon ec2實例需要兩個彈性IP?
- 9. Python - 爲什麼在另一個實例方法中調用這個實例方法時不需要括號?
- 10. 爲什麼我需要現實生活中的私人方法?
- 11. AWS - EC2:爲什麼我需要多個實例?
- 12. 我做了什麼?需要實例化一個模板類
- 13. 爲什麼我需要「&」?
- 14. 爲什麼我需要android.permission.ACCESS_CHECKIN_PROPERTIES
- 15. 爲什麼我需要extern?
- 16. 爲什麼我需要MEX?
- 17. 爲什麼我不需要
- 18. 爲什麼我需要OleDbCommand.Prepare()?
- 19. 爲什麼spinner listener需要onNothingSelected方法?
- 20. 爲什麼CustomFieldSerializer需要靜態方法?
- 21. 爲什麼需要DataBind()方法?
- 22. 爲什麼申請方法需要parens?
- 23. 爲什麼需要使用'addChildViewController:'方法
- 24. 爲什麼Settings.System.put/get方法需要ContentResolver?
- 25. 爲什麼JSON不需要setXXX方法?
- 26. 爲什麼你需要重載方法?
- 27. 爲什麼我們需要檢查用戶的UserInterface實例
- 28. 爲什麼我們需要新的實例變量?
- 29. 爲什麼我要爲一個匿名類「需要opCmp」?
- 30. 爲什麼需要
鑑於問題的簡潔性,我可以稍微合理化總投票。我不能合理化的是一個與新程序員非常相關的問題的投票。當然,這個問題可能會有所提高,我認爲這最終不會得到5票的反對。 –