在PHP中,要創建一個新對象,您應該這樣做,$dog = new Dog;
。但在Java中,您可以執行類似於Dog x = new Dog;
或Dog x;
的操作。有人可以解釋爲什麼你需要在變量前面說Dog類嗎?在Java中創建對象問題
回答
靜態Java和明確鍵入。
由於繼承原因,變量的類型可能與其所保持的值的類型不同。例如:
Animal dog = new Dog();
這裏dog
可變的類型是Animal
,但它保持的值是到的Dog
實例的引用。
現在在其他一些語言中(C#3作爲Java的近鄰的明顯例子),您可以使用隱式鍵入的局部變量當您確實希望局部變量的類型與用於初始化表達式:
var dog = new Dog(); // Equivalent to Dog dog = new Dog();
(其他一些靜態類型語言的類型推斷的能力遠遠超出了這一點)
所以,回到你原來的問題,答案是:
dog
變量有一個編譯時已知的類型;這在PHP中是不正確的- 變量的類型必須在Java中明確聲明;這與靜態類型,而不是靜態一個要求打字
在Java中,你會這樣調用構造函數(如果它沒有參數):
Dog x = new Dog();
通過在變量前面寫的類名,你告訴Java的,你的變量x
是鍵入Dog
。這允許Java找出你寫的時候做錯了什麼:
Dog x = new Cat();
PHP是一種鬆散類型的語言
在PHP中,變量不需要在添加值之前聲明 。
在上面的例子中,你看到你 不必告訴PHP哪個數據 輸入變量是。
PHP根據其值自動將 變量轉換爲正確的數據類型 。
在強類型編程 語言中,您必須在使用它之前聲明(定義) 變量 的類型和名稱。
在PHP中,變量在您使用時會自動聲明爲 。
看起來你也喜歡貓和狗;) – Desintegr
我認爲這是因爲Java是嚴格鍵入的。您需要在編譯時輸入對象的類型。
您需要確定類型,因爲Java是強和靜態鍵入語言。
如果聲明x
爲狗,它只能是一個狗或狗一個子類。
又如:
public class Animal {
}
public class Dog extends Animal {
}
public class Cat extends Animal {
}
下面的代碼是有效的,因爲x
被聲明爲動物,它可以是一個狗或貓,或動物的任何亞類:
Animal x;
x = new Dog();
x = new Cat();
+1爲好,完整答案。我只是補充說,只要'new'後面的類實現了這個接口,變量的類型也可以是一個接口。 – PhiLho
謝謝,我明白了! –
可以使用強類型和靜態類型的語言,而不需要兩次聲明類型(例如Scala)。我認爲一個更準確的答案就是你所說的「......而Java在類型推斷方面做得很少」。 – Grundlefleck
這就是Java語法創建一個類的對象,也被稱爲創建一個實例。
例如,Dog adog;
其中adog
是Dog
類型的參考變量。
Dog adog=new Dog();
其中adog
是Dog
類型的參考變量,它現在指的是內存中的Dog
對象。
然後使用點(。)運算符來訪問對象的實例變量和方法。
你的類名object name = new class name(); 對於實施例
類動物(){
//代碼 }
動物狗=新動物();
- 1. Java對象實例創建問題
- 2. 在neo4j中創建對象的問題
- 3. 新對象創建問題
- 4. 問題創建新對象
- 5. 創建對象WMPlayer.OCX問題
- 6. 在java中創建對象
- 7. 在Java中創建對象數組時遇到問題
- 8. 程序在java中創建類對象時出現的問題
- 9. Java在對象內創建對象
- 10. 創建對象的Java中
- 11. 對象創建JAVA
- 12. Java中的對象問題
- 13. Java對象問題
- 14. java創建對象建議
- 15. Groovy對象數組創建問題
- 16. 與controlP5和創建對象的問題
- 17. pygtk問題 - 無法創建gdk.Color對象
- 18. NBuilder - 問題創建嵌套對象
- 19. 創建兩個Rectangle對象的問題
- 20. 當創建對象時this._super()問題
- 21. 遇到問題創建一個對象
- 22. POST不會在Java中創建對象
- 23. 在java中創建隨機對象
- 24. 對象在java中如何創建?
- 25. 如何在java中創建BLOB對象?
- 26. 在Java中爲CustomButton創建ActionEvent對象
- 27. 在java中創建一個對象
- 28. 在Java中創建不可變對象
- 29. 在java中創建對象的位置
- 30. 在java中創建對象的麻煩
因爲php,那麼... s ** ks。 (非常主觀) – whiskeysierra