2012-03-28 5 views
1

Ich habe eine Java-Klasse "SampleA". Wie kommt es, dass "SampleA" weiß, dass seine Superklasse Object ist?Wie kann eine Klasse wissen, dass ihre Superklasse Objekt ist?

Hier sind meine Antworten,

  1. Während der Entwicklung wird automatisch die Konfiguration von JRE in Eclipse sagen, dass jede Klasse Superklasse als „Objekt“

  2. Während des Einsatzes hat, die Klassenlade nehmen die Verantwortung zu sagen, dass Superklasse "Objekt" ist.

Bitte korrigieren Sie mich.

+0

Wenn eine der Antworten half Ihnen dann erinnern sie als die richtige Antwort zu markieren. – Jivings

Antwort

3

Wenn während der Kompilierung keine Oberklasse angegeben wird, wird sie als java/lang/Object festgelegt. Um zu klären, das wäre genau das gleiche, als wenn Sie die Klasse als Verlängerung Objekt erklärt hatten:

public class Example extends Object { 
} 

die All-Compiler tun, ist fungieren als Zeitersparnis, was bedeutet, dass Sie nicht schreiben müssen, um die oben in jeder Klasse, das ist alles.

Um dies zu unterstützen, wird der Verifikationsvorgang von ClassLoading während der Ausführung überprüfen, dass alle Klassen definitiv eine Oberklasse haben. Mit der einzigen Ausnahme von java/lang/Object, die keine Oberklasse hat.

+0

Wer macht diese Einstellung? – Hari

+0

@Hari Der Compiler. –

+0

Der Compiler setzt es während der Kompilierung. – Jivings

0

JRE ist die Laufzeit, Classloaders kommen während der Laufzeit ins Bild. Jedes Objekt bezieht sich auf die Klasseninformationen. Die Standard-Superklasse gemäß JLS ist java.lang.Object. Sie können Klassenhierarchien mithilfe von 'reflection' in Java herausfinden.

1

Vom Java Language Specification:

4.3.2. Das Klassenobjekt

Das Klassenobjekt ist eine Oberklasse (§8.1.4) aller anderen Klassen. mit erstreckt Schlüsselwort oder nicht

+0

+1. Entweder ist die Frage schlecht formuliert oder dies ist derzeit die * einzige * richtige Antwort. – aioobe

1

Zum Zeitpunkt der Kompilierung, Compiler, ob Ihre Klasse eine andere Klasse erweitert. wenn es nicht Ihre Klasse, die als Verlängerung java.lang.Object

Sie können dies überprüfen, nachdem Ihre Klasse Kompilieren von javap Werkzeug zur Verfügung gestellt mit JDK

1

Sie können auch diesen Code verwenden ich versucht habe :

public class Example { 
public static void main(String[] args) { 
    Example obj = new Example(); 
    obj.getSuperClassName(); 
} 
public void getSuperClassName() { 
    Class cls = this.getClass(); 
    System.out.println(cls.getSuperclass()); 
} 
} 

OutPut:

class java.lang.Object 
+0

Dies beantwortet die Frage nicht, beweist es nur. – Jivings

+0

@Jivings So lesen Sie meine erste setence "Sie können auch" ist da.right? –

0

ich gehe davon aus th bei der Frage, wie die Klasse selbst herausfinden kann, was ihre eigene Oberklasse zur Laufzeit ist.

Hier ist, wie:

public class Sample .... { 

     private boolean extendsObject() { 
      return this.getClass().getSuperclass() == Object.class; 
     } 
Verwandte Themen