2010-02-28 19 views
5

En PHP, para crear un nuevo objeto, haría algo como esto, $dog = new Dog;. Pero en Java harías algo como, Dog x = new Dog; o Dog x;. ¿Alguien podría explicar por qué necesitas decir la clase Dog delante de la variable?Creando objetos en Java pregunta

+2

Porque php, bueno ... s ** ks. (muy subjetivo) – whiskeysierra

Respuesta

5

Java estáticamente y explícitamente mecanografiado.

El tipo de variable puede ser diferente del tipo de valor que posee, debido a la herencia. Por ejemplo:

Animal dog = new Dog(); 

Aquí el tipo de la dogvariable de es Animal, pero el valor que posee es una referencia a una instancia de Dog.

Ahora en algunos otros lenguajes (C# 3 es el ejemplo obvio como un vecino cercano de Java) se puede utilizar variables locales implícitamente mecanografiadas cuando realmente se desea que el tipo de una variable local a ser el mismo que el tipo de la expresión utilizada para inicializarlo:

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

(. las capacidades de tipo de inferencia de otros lenguajes de tipos estáticos ir mucho más allá de esto)

Por lo tanto, para volver a su pregunta original, la respuesta es:

  • La variable dog tiene un tipo que se conoce en tiempo de compilación; esto no es cierto en PHP
  • El tipo de la variable debe especificarse explícitamente en Java; esto está relacionado con tipos estáticos, pero no es un requisito de estática escribiendo
1

En Java que podríamos llamar el constructor como esto (en caso de que no tiene parámetros):

Dog x = new Dog(); 

Al escribir el nombre de clase delante de la variable, es decir Java que la variable de x es de tipo Dog. Esto permite Java saber que estás haciendo algo mal al escribir:

Dog x = new Cat(); 

Ver PHP Variables at w3schools:

PHP es un lenguaje de programación relajado con tipo

En PHP, una variable no lo hace debe declararse antes de agregarle un valor.

En el ejemplo anterior, verá que no tiene que decirle a PHP qué datos escriba la variable.

PHP convierte automáticamente la variable al tipo de datos correcto, dependiendo de su valor.

En un establecimiento inflexible programación idioma, se tiene que declarar (definir) el tipo y el nombre de la variable antes de usarlo.

En PHP, la variable se declara automáticamente cuando la usa.

+1

Parece que te gustan los gatos y los perros también;) – Desintegr

0

Creo que es porque Java está estrictamente tipado. Necesita poner el tipo de objeto en tiempo de compilación.

6

Necesita precisar el tipo porque Java es un fuerte y estático lenguaje escrito.

Si se declara x como un perro , sólo puede ser un perro o una subclase de perro.

Otro ejemplo:

public class Animal { 
} 

public class Dog extends Animal { 
} 

public class Cat extends Animal { 
} 

El siguiente código es válido porque x se declara como Animal, que puede ser un perro o un gato, o cualquier subclase de Animal:

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

+1 para bien, respuesta completa. Añadiré que el tipo de variable también puede ser una interfaz, siempre que la clase que sigue a la 'nueva' implemente esta interfaz. – PhiLho

+0

¡Gracias, ahora lo entiendo! –

+0

Es posible tener un lenguaje tipado fuerte y estático que no requiera que declare el tipo dos veces (por ejemplo, Scala). Creo que una respuesta más precisa es lo que dijiste más "... y Java hace muy poco en el camino de la inferencia tipográfica". – Grundlefleck

0

sintaxis de Java Eso es para crear un objeto de una clase, también llamado como la creación de una instancia.

Por ejemplo, Dog adog; donde adog es una variable de referencia de tipo Dog.

Dog adog=new Dog(); donde adog es una variable de referencia de tipo Dog que ahora se refiere al objeto Dog en la memoria.

Y utiliza el operador punto (.) Para acceder a las variables y métodos de instancia del objeto.

0

su nombre de clase object name = new class name(); Por ejemplo

clase de animales() {

// su código } perro

animal = new Animal();