2010-02-28 17 views
5

In PHP, um ein neues Objekt zu erstellen, würden Sie so etwas tun, $dog = new Dog;. Aber in Java würden Sie etwas wie Dog x = new Dog; oder Dog x; tun. Kann jemand erklären, warum Sie die Hundeklasse vor der Variable sagen müssen?Erstellen von Objekten in Java Frage

+2

Weil PHP, gut ... s ** ks. (sehr subjektiv) – whiskeysierra

Antwort

5

Java statisch und explizit eingegeben.

Der Typ der Variablen kann aufgrund von Vererbung vom Typ des Werts abweichen, den sie enthält. Zum Beispiel:

Animal dog = new Dog(); 

hier der Typ der dogvariableAnimal ist, aber der Wert gilt, ist ein Verweis auf eine Instanz Dog.

nun in einigen anderen Sprachen (C# 3 ist das offensichtlichste Beispiel als naher Nachbar von Java ist) können Sie implizit typisierte lokale Variablen verwenden, wenn Sie tatsächlich den Typ einer lokalen Variablen wollen die gleiche sein wie die Art der der Ausdruck früher initialisieren:

var dog = new Dog(); // Equivalent to Dog dog = new Dog(); 

(. die Typenanalyse-Funktionen von einigen anderen statisch typisierten Sprachen geht weit darüber hinaus)

Also, um Ihre ursprüngliche Frage zurück zu gehen, ist die Antwort:

  • Die dog Variable hat einen Typ, der zur Kompilierzeit bekannt ist; dies ist nicht wahr in PHP
  • Der Typ der Variablen muss explizit in Java angegeben werden; dies statische Typisierung verwandt ist, aber es ist kein Anforderung statischer
1

In Java Sie den Konstruktor wie folgt aufrufen würde (im Falle hat es keine Parameter):

Dog x = new Dog(); 

durch die Klasse-Namen vor der Variablen schreiben, Sie Java sagen, dass Ihre Variable x ist von Typ Dog. Diese Java ermöglicht es Ihnen etwas, um herauszufinden, falsch machen beim Schreiben:

Dog x = new Cat(); 

PHP Variables at w3schools Siehe:

PHP ist eine lose typisierte Sprache

In PHP, hat eine Variable nicht muss deklariert sein, bevor ein Wert hinzugefügt wird.

Im obigen Beispiel sehen Sie, dass Sie PHP nicht mitteilen müssen, welche Daten die Variable eingeben.

PHP konvertiert die Variable automatisch in den richtigen Datentyp, , abhängig von seinem Wert.

In einer stark typisierten Programmierung Sprache, müssen Sie vor der Verwendung (definieren) die Art und Name der Variablen erklären.

In PHP wird die Variable automatisch deklariert, wenn Sie sie verwenden.

+1

Es scheint, Sie mögen auch Hunde und Katzen;) – Desintegr

0

Ich denke, es ist, weil Java streng typisiert ist. Sie müssen den Typ des Objekts zur Kompilierzeit setzen.

6

Sie müssen den Typ präzisieren, da Java eine starke und statische typisierte Sprache ist.

Wenn Sie x als Hund erklären, kann es nur ein Hund oder eine Unterklasse von Dog sein.

Ein weiteres Beispiel:

public class Animal { 
} 

public class Dog extends Animal { 
} 

public class Cat extends Animal { 
} 

Der folgende Code ist gültig, weil x als Tier erklärt, kann es ein Hund oder ein Cat oder jede Unterklasse von Tiere sein:

Animal x; 
x = new Dog(); 
x = new Cat(); 
+0

+1 für eine gute, vollständige Antwort. Ich füge nur hinzu, dass der Typ der Variablen auch eine Schnittstelle sein kann, solange die Klasse nach dem 'Neuen' diese Schnittstelle implementiert. – PhiLho

+0

Danke, ich verstehe jetzt! –

+0

Es ist möglich, eine starke und statische typisierte Sprache zu verwenden, bei der Sie den Typ nicht zweimal deklarieren müssen (z. B. Scala). Ich denke, eine genauere Antwort ist, was Sie gesagt haben, plus "... und Java macht sehr wenig in der Art der Typ-Inferenz." – Grundlefleck

0

Das ist Java-Syntax zum Erstellen eines Objekts einer Klasse eingeben, die auch als eine Instanz genannt.

Zum Beispiel Dog adog; adog wo eine Referenzvariable vom Typ Dog.

Dog adog=new Dog(); wo adog ist eine Referenzvariable vom Typ Dog das nun an das Dog Objekt im Speicher verweist.

Und Sie verwenden den Punkt (.) -Operator, um auf die Instanzvariablen und -methoden des Objekts zuzugreifen.

0

Ihr Klassenname Objektname = neuer Klassenname(); Für Beispiel

Klasse Tier() {

// Code }

Tier Hund = new Tier();