tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
312
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    AKST AKST ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    198
    Hallo Leute,

    ich habe diesen einfachen Code erstellt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    package package1;
     
    public class Tier {
        
         
         void ausgabe(){
            System.out.println("Ich bin ein Tier"); 
         }
     
       public class Säugetier extends Tier{
        
        void ausgabe(){
            System.out.println("Ich bin ein Säugetier");    
         }
      }
      
      public class Mensch extends Säugetier{
        
        void ausgabe() {
            System.out.println("Ich bin ein Mensch");
            
        }   
      }   
    }

    Jetzt möchte ich ein Objekt von Mensch erzeugen. Und muss hier den "Umweg" über die Klasse Tier gehen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    import package1.Tier;
    public class AbstractDemo {
     
        public static void main(String[] args) {
        
          Tier.Mensch heinz = new Tier().new Mensch();
          
          heinz.ausgabe();      
        }
    }

    Wenn ich nun
    Code :
    1
    
    Tier.Mensch heinz = new Tier().
    eingebe bekomme ich von der Codecompeltition von Eclipse kein new angeboten, weiss jemand warum das so ist?
    Geändert von AKST (27.06.04 um 16:48 Uhr)
     
    Gruß AKST

  2. #2
    AKST AKST ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    198
    Was ich ebenfalss nicht verstehe, warum muss ich den Umweg über
    Code :
    1
    
    Tier.Mensch heinz = new Tier().new Mensch();
    gehen? Im Buch "Java ist auch eine Insel" macht der Autor das ganz einfach über
    Code :
    1
    
    Tier m = new Mensch();
    Das will eclipse beim besten Willen nicht annehmen. Woran liegt das. Im besagten Buch handelt es sich ebenfallss um eingeschlossene Klassen. Also die Klasse Mensch ist von der Klasse Tier abgeleitet und ist in dieser eingeschlossen.
    Geändert von AKST (27.06.04 um 16:49 Uhr)
     
    Gruß AKST

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Du musst new Tier().new Mensch(); verwenden, da du Mensch als Innere Klasse in der Klasse Tier definiert hast. Das Präfix "Tier" gibt quasi den Namensraum für diese Klasse an.

    Wenn du die Klassen in einzelnen Dateien erstellt hättest könntest du auch
    mit Tier m = new Mensch(); arbeiten.

    Gruß Tom
     

  4. #4
    AKST AKST ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    198
    Hallo Thomas,

    erstmal danke für deine Antwort, aber das war mir schon klar. Was ich mich ja frage ist, warum mir eclipse kein new an der von mir beschriebenen Stelle "anbietet".
    Ich habe mir das Beispiel im buch nochmal genauer angeschaut, und dabei handelt es sich nicht um innere Klassen, sondern die stehen nur untereinander.


    naja egal, was neues dazugelernt...
    Geändert von AKST (27.06.04 um 17:31 Uhr)
     
    Gruß AKST

Ähnliche Themen

  1. Designstudent & Illustrator bietet an
    Von Aldous im Forum Stellengesuche (entgeltlich)
    Antworten: 0
    Letzter Beitrag: 18.03.10, 20:07
  2. operator[] warum referenz zurückgeben?
    Von maniacquaker im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 01.12.06, 18:27
  3. Antworten: 14
    Letzter Beitrag: 06.03.04, 18:03
  4. Php Page Geht Nich Warum?
    Von mannita im Forum PHP
    Antworten: 14
    Letzter Beitrag: 02.03.02, 16:18
  5. Warum geht das in PS 6.0 nich mehr ?
    Von TTek im Forum Photoshop
    Antworten: 3
    Letzter Beitrag: 01.02.02, 15:07