2010-06-02 6 views
5

Los chicos heredamos de Object como de cualquier otra clase (excepto, por supuesto, que no tenemos que declararlo explícitamente) o hay algunos privilegios especiales para la clase Object y no se heredan como otras clases?¿Heredamos de Object?

+12

En realidad no, no lo hacemos porque somos humanos, no objetos de Java. – BoltClock

+1

Bueno, técnicamente somos objetos (aunque muy complejos) ... incluso si no nos gusta que se nos considere como tales. – CheesePls

Respuesta

2

No es lo mismo. Aquí el extracto de JLS 8.1.3:

Si la declaración de clase para cualquier otra clase no tiene cláusula se extiende, entonces la clase tiene la clase Object como su superclase directa implícita.

Por supuesto, Object sí es un poco especial (JLS):

Cada clase excepto Object es una extensión de (es decir, una subclase de) una sola clase existente (§ 8.1 .3) y pueden implementar interfaces (§8.1.4).

+0

Y qué pasa si la clase tiene la cláusula extends, porque no especifica eso. –

+1

@Knowing Todas las clases heredan directa o indirectamente de 'Object'. La relación de herencia, por supuesto, no puede formar un ciclo. La clase 'Object' es la única que hereda de nadie, es la parte superior de la jerarquía. http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html No hay diferencia entre heredar de 'Object' o de otra clase, y excepto los tipos primitivos, todo es un objeto. Incluso las matrices son objetos http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html. – ewernli

+0

@ewernli así que si usted dice que no hay diferencia entre heredar de un objeto y heredar de cualquier otra clase, ¿por qué podemos heredar de más de una clase en un ejemplo como este: public class MyClass extends YourClass {}? –

0

Todo es un objeto en Java. Se pueden invocar todos los métodos de Object (toString(), wait(), etc.) en cualquier instancia de cualquier clase de Java.

+0

* "Todo es un objeto en Java." * No es cierto. Los primitivos no son 'Object's. –

+0

@ om-nom-nom Su comentario parece pedante. La pregunta no tiene nada que ver con los primativos. –

5

Cada clase en Java ES un Objeto. Se comportan como Objetos, se pueden agregar a colecciones de tipo Objeto, pueden usar cualquier método definido en Objeto.

Por lo tanto, SÍ, todo (excepto las primitivas) hereda de Object en Java.

EDITAR: Java adopta el enfoque de "Todo es un objeto". De alguna manera fuerza la programación orientada a objetos.

Ejemplo:

  • Si la clase A no se extiende otra clase inherentemente extiende objeto.

  • Si la clase A amplía otra clase B, se extiende también a objeto ya que B debe tener Objeto extendido.

+0

Entonces, ¿cómo es sí o no? Pregunto porque recibo dos respuestas que se contradicen entre sí. –

+0

La respuesta es "heredamos de Object como de cualquier otra clase (excepto por supuesto que no tenemos que declararlo explícitamente)" – CheesePls