2010-02-28 14 views

Odpowiedz

5

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 dogzmiennej 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
1

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.

+1

Wygląda na to, że lubisz koty i psy;) – Desintegr

0

Myślę, że to dlatego, że Java jest ściśle wpisana. Musisz ustawić typ obiektu podczas kompilacji.

6

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(); 
+0

+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

+0

Dzięki, rozumiem teraz! –

+0

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

0

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.

0

Twoja nazwa klasy nazwa obiektu = nowa nazwa klasy(); Na przykład

klasy zwierząt() {

// kod }

dla psów = nowy zwierząt();

Powiązane problemy