W PHP, aby utworzyć nowy obiekt, zrobiłbyś coś takiego, $dog = new Dog;
. Ale w Javie zrobiłbyś coś takiego, Dog x = new Dog;
lub Dog x;
. Czy ktoś mógłby wyjaśnić, dlaczego musisz podać klasę psa przed zmienną?Tworzenie obiektów w języku Java pytanie
Odpowiedz
Jawnie statycznie i jawnie wpisane.
Typ zmiennej może być różny od typu posiadanej wartości z powodu dziedziczenia. Na przykład:
Animal dog = new Dog();
Tutaj typ dog
zmiennej jest Animal
, ale ona trzyma wartość jest odwołaniem do instancji Dog
.
Teraz w niektórych innych językach (C# 3 jest oczywistym przykładem jako koło sąsiada Java) można użyć niejawnie wpisywanych zmiennych lokalnych kiedy rzeczywiście chcą typ zmiennej lokalnej być taki sam jak typ wyrażenie używane, aby go zainicjować:
var dog = new Dog(); // Equivalent to Dog dog = new Dog();
(. możliwości rodzaj wnioskowania niektórych innych statycznie typowanych języków znacznie wykraczają poza tym)
Tak, aby wrócić do swojego pierwotnego pytania, odpowiedź brzmi:
- Zmienna
dog
ma typ znany podczas kompilacji; nie jest to prawdą w PHP - Typ zmiennej musi być wyraźnie określony w Javie; Jest to związane z typowania statycznego, ale nie jest to wymógstatyczne wpisując
W Javie można nazwać konstruktora jak to (w przypadku, gdy nie ma parametry):
Dog x = new Dog();
pisząc nazwa-klasy w przedniej części zmiennej, powiedz Java że zmienna x
jest typ Dog
. Pozwala to Java, aby dowiedzieć się, że robisz coś złego pisząc:
Dog x = new Cat();
Zobacz PHP Variables at w3schools:
PHP jest luźno Wpisane Język
W PHP, zmienna nie musi być zadeklarowana przed dodaniem do niej wartości.
W powyższym przykładzie widzisz, że nie musisz podawać PHP, której typem danych jest zmienna .
PHP automatycznie konwertuje zmienną na prawidłowy typ danych, w zależności od jej wartości.
W mocno napisanym języku programowania należy zadeklarować (zdefiniować) typ i nazwę zmiennej przed jej użyciem.
W PHP zmienna jest automatycznie deklarowana podczas jej używania.
Wygląda na to, że lubisz koty i psy;) – Desintegr
Myślę, że to dlatego, że Java jest ściśle wpisana. Musisz ustawić typ obiektu podczas kompilacji.
Konieczne jest dokładne określenie typu, ponieważ Java jest językiem pisanym w standardzie silnym i static.
Jeśli zadeklarujesz x
jako Dog, to może być tylko Dog lub podklasą Dog.
Inny przykład:
public class Animal {
}
public class Dog extends Animal {
}
public class Cat extends Animal {
}
Poniższy kod jest ważny, ponieważ x
jest zadeklarowana jako Animal, to może być Dog lub Cat, lub dowolny podklasa Animal:
Animal x;
x = new Dog();
x = new Cat();
+1 za dobrą, kompletną odpowiedź. Dodam tylko, że typ zmiennej może być także interfejsem, o ile klasa po "nowym" implementuje ten interfejs. – PhiLho
Dzięki, rozumiem teraz! –
Możliwe jest posiadanie silnego i statycznego języka, który nie wymaga dwukrotnego zadeklarowania typu (np. Scala). Myślę, że dokładniejszą odpowiedzią jest to, co powiedziałeś: "... a Java robi bardzo mało w sposobie wnioskowania typu." – Grundlefleck
składni Javy Thats do tworzenia obiektu klasy, nazywany również jako tworzenie instancji.
Przykładowo Dog adog;
gdzie adog
jest zmienną odniesienia typu Dog
.
Dog adog=new Dog();
gdzie adog
jest zmienna referencyjna typu Dog
który obecnie odnosi się do obiektu Dog
w pamięci.
Używasz operatora kropki (.), Aby uzyskać dostęp do zmiennych i metod instancji obiektu.
Twoja nazwa klasy nazwa obiektu = nowa nazwa klasy(); Na przykład
klasy zwierząt() {
// kod }
dla psów = nowy zwierząt();
- 1. Tworzenie obiektów w pamięci stosów w java?
- 2. Tworzenie podzbioru zestawu w języku Java
- 3. Tworzenie identyfikatora GUID w języku Java
- 4. Tworzenie stron w języku Java bez Eclipse
- 5. Podstawowe pytanie w języku Java: Równość ciągu znaków
- 6. Tworzenie tablicy podczas przekazywania jej jako argumentu w języku Java
- 7. Java - tworzenie obiektów z parami klucz/wartość?
- 8. Tworzenie obiektów w GenericObjectPool
- 9. Tworzenie tablicy obiektów w Javie
- 10. inny java pytanie rodzajowy
- 11. tworzenie tablic obiektów w javascript
- 12. Pytanie dotyczące płynny interfejs w języku C#
- 13. Proste pytanie LINQ w języku C#
- 14. Jak dokonać paginacji listy obiektów w języku Java 8?
- 15. W języku Java, jak przekonwertować listę obiektów do tablicy bajtów?
- 16. Tablica 2D obiektów w języku Python
- 17. Jak animacja w języku Java?
- 18. Tworzenie instancji z łańcucha znaków w języku Java
- 19. Tworzenie poleceń dla aplikacji terminalowej w języku Java
- 20. Drukowanie w języku Java: tworzenie PageFormat z minimalnym dopuszczalnym marginesem
- 21. Java obiektu referencyjnego/zakres pytanie
- 22. Tworzenie testów dla obiektów poco
- 23. Java DecimalFormat Notacja naukowa Pytanie
- 24. Tworzenie niezmiennych obiektów z javabean
- 25. Tworzenie PDF z Java
- 26. Java 64-bitowe pytanie JDK
- 27. Proste pytanie o java SimpleDateFormat
- 28. Usuwanie obiektów identycznych w języku Ruby?
- 29. Jak analizować negatywnie w języku Java w języku Java
- 30. Tworzenie tablicy JSON w języku C#
Bo php, well ... s ** ks. (wysoce subiektywne) – whiskeysierra