tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
300
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mjkraus mjkraus ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    29
    Hallo!

    Ich habe folgende Klasse:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    
    abstract public class TestKlasse{
      protected Test test;
     
      public TestKlasse{
        this.test = new Test();
      }
    }

    Soweit ist auch alles in Ordung. Wenn ich aber das Objekt wie folgt erzeuge:

    Code java:
    1
    2
    3
    
    this.test = new Test(){
      //...
    };

    ist das Objekt allerdings vom Typ "TestKlasse$1" und nicht "Test". Was habe ich falsch gemacht?

    Ciao Max
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.502
    Hi

    woher kommt denn Test?
    Was sagt dir "TestKlasse$1"?
     

  3. #3
    mjkraus mjkraus ist offline Mitglied Bronze
    Registriert seit
    Apr 2007
    Beiträge
    29
    Ich habe den Code vereinfacht geschrieben: Test ist eine von mir geschriebenen Klasse, die in TestKlasse instanziiert werden (bei gleichzeitigem überschreiben von Methoden). Wenn ich aber das Objekt "test" ausgebe gehört es nicht der Klasse "Test" sondern "TestKlasse$1" an. Was das bedeutet weiß ich leider nicht.
     

  4. #4
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.502
    Nocheinmal:
    Zeig Test.
    Und was gibt "TestKlasse$1" aus?
     

  5. #5
    SE Tutorials.de Gastzugang
    Ich glaube du hast hier einiges was OOP angeht etwas missverstanden.

    1) In einer abstrakten Klasse wird niemals etwas implementiert. Eine abstrakte Klasse dient als Grundgerüst für Klassen welche davon abgeleitet sind. In der Regel sollte man eine abstrakte Klasse auch so konzipieren das sie nie dierekt instanzierbar ist sondern nur über Methoden welche Objekte einer abgeleiteten , implementierten Sub-Klasse returnen.
    2) Natürlich kann man innerhalb von Konstruktoren auch Objekte anderer Klassen erzeugen , es gibt nirgendwo eine Regel die dir das verbietet , aber überlege doch ein mal selbst ob das überhaupt Sinn macht oder ob es nicht einfacher ist beide Objekte seperat zu erzeugen und dann von außen beide in Abhängigeit zu manipulieren.
    3) TestKlasse$1 - woher kommt das ? Der Grund dafür ist das was ich bereits erwähnte : in einer abstrakten Klasse wird nicht implementiert. Da du jetzt aber einen Konstruktor implementiert hast baut der Compiler daraus eine abgeleitete , implementierte Sub-Klasse TestKlasse$1 welche , da innerhalb der Klasse TestKlasse erzeugt , richtigerweise als anonyme innere Klasse bezeichnet wird.

    Warum jetzt allerdings
    Code java:
    1
    
    protected Test test;
    vom Typ TestKlasse$1 ist verstehe ich nicht. Ich glaube du hast dich hier falsch ausgedrückt und meintest ein Objekt der Klasse TestKlasse , oder ? Denn test ist laut deklaration vom Typ Test , welche hier zwar nicht aufgführt ist aber auf Grund des Names auszuschließen ist das Test von TestKlasse$1 erbt.


    Wenn du jetzt also ein Objekt des Super-Typs TestKlasse willst dann musst du eine Klasse implementieren welche davon erbt. Dies kann eine anonyme innere , eine bezeichnete innere oder auch eine eigenständige Klasse sein ... so lange du nicht versuchst TestKlasse selbst zu instanzieren *was aus dem bei 1) genannten zu vermeiden ist.
     

Ähnliche Themen

  1. Problem beim PDF
    Von Lenox im Forum PHP
    Antworten: 6
    Letzter Beitrag: 28.11.08, 05:47
  2. Problem beim Design
    Von DjRay im Forum HTML-Editoren
    Antworten: 7
    Letzter Beitrag: 21.09.08, 23:14
  3. css Problem beim IE
    Von Don_Pazo im Forum CSS
    Antworten: 1
    Letzter Beitrag: 06.08.06, 06:05
  4. Problem beim vergrößern des JComboBox Popup's (nur beim GridBagLayout)
    Von mad_dark_angel im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 22.04.06, 17:58
  5. Problem beim RIS
    Von KiNgLui im Forum Microsoft Windows
    Antworten: 3
    Letzter Beitrag: 25.01.04, 12:20