2011-04-19 4 views
3

Possible Duplicate:
How to make an outer class inherited from an inner classComment hériter d'une classe interne?

Je veux savoir Puis-je hériter une classe de la classe interne Autre classe?
Je veux courir en dessous du code mais j'ai une erreur.

public class Computer { 

    int model; 

    Computer(int i) { 
     model = i; 
    } 

    public class HardDrive {  
     int size; 

     public HardDrive(int i) { 
      size = i; 
     } 

     public HardDrive() { 
      size = 40; 
     } 
    } 
} 

Et la principale est:

class SCSI extends Computer.HardDrive { 

    SCSI(Computer c) { 
     c.super(80); 
    } 
} 

Je reçois cette erreur:

no enclosing instance of type inner.inherit.Computer is in scope

+0

Veuillez utiliser la recherche avant de poser de nouvelles questions. Des questions ont déjà été posées sur le SO et vous pouvez trouver votre réponse instantanément. –

+0

@brian J'ai cherché avant de demander mais je ne trouve pas ça, je ne sais vraiment pas pourquoi je ne trouve pas ça, tanx pour votre aide. – Am1rr3zA

Répondre

0

semble fonctionner très bien pour moi (See). Assurez-vous que SCSI est dans le même espace que l'ordinateur ou bien utiliser

class SCSI extends <namespace>.Computer.HardDrive { 
+1

Pouvez-vous expliquer plus s'il vous plaît, je ne comprends pas ce que vous entendez par namespace :( – Am1rr3zA

+0

@ Am1rr3za désolé dans Java c'est paquet –

+0

Oui, ils sont dans le même paquet, j'ai une erreur sur "c.super (80);" – Am1rr3zA

0

Si SCSI n'est pas une autre classe interne dans Computer, vous devez faire HardDrive statique.

+0

faire HardDrive Static n'a pas résolu mon problème. – Am1rr3zA

0

Je pense que cela devrait fonctionner si vous faites du HardDrive une classe interne statique. La raison en est que les classes internes "normales" ont une relation avec une instance de la classe englobante (par exemple, vous pouvez accéder à la "ceci" de l'ordinateur en écrivant Computer.this en HardDrive), c'est pourquoi le compilateur veut qu'une instance d'ordinateur soit dans portée. Si vous rendez HardDrive statique, aucune connexion de ce type n'existe entre les instances de la classe interne et de la classe externe, vous pouvez donc en hériter sans limitation.