2013-07-16 3 views
0

J'apprends Java à partir d'un livre. Je finis déjà épisode héritage et je ne comprends pas un exemple de programme dans l'épisode Interfaces utilisateur:Inheritance implement

public class AWTApp extends Frame { 
... 
public AWTApp(String caption) 
    { 
     super(caption); 
     setLayout(new GridLayout(PANELS_NO, 1)); 
     for(int i=0;i<PANELS_NO;i++) 
     { 
      panels[i]=new Panel(); 
      add(panels[i]); 
     } 
     label_test(panels[0]); 
     ... 
    } 
} 

C'est le constructeur de la classe principale (AWTApp) qui hérite de la classe Cadre. Dans l'autre exemple, le cadre est une variable de la classe principale (AWTApp) et pour ajouter des composants, vous écrivez frame.add (component) ((Nom de frame frame, Nom de composant - component)). Comment peuvent-ils écrire dans ce code juste add() ou simplement pack() s'il n'y a pas d'objet frame?

+1

'AWTApp' est un' Frame'. Lorsque vous appelez 'add()' dans le constructeur, vous l'appelez 'this', qui est une référence à un objet de type' AWTApp'. –

Répondre

0

public class AWTApp extends Frame

Cela signifie que AWTApp is a Cadre

Donc lorsque vous appelez

public AWTApp(String caption) 
    { 
     super(caption); // here you are calling super constructor the frame constructor and creating the frame 

     this.setLayout(new GridLayout(PANELS_NO, 1)); // cause you are a frame you can call with this parents public protected (and package if they are in the same package) 
     this.add(..); 
    } 
} 
+0

Merci! Je vais essayer de mieux le comprendre demain. C'est juste difficile à comprendre. Savez-vous où puis-je trouver des exercices pour l'héritage? Je trouve toujours des exercices très durs qui consistent en un contenu que je n'ai pas encore appris. –

0

Voici quelques explications.

D'abord, un code:

public class Parent{ 

    public void doThing(){ 
     System.out.println("I did a thing!"); 
    } 

} 

public class Child extends Parent{ 

    public void doAnotherThing(){ 
     System.out.println("I did another thing!"); 
    } 

} 

public class MainClass{ 

    public static void main(String[] args){ 
     Parent p = new Parent(); 
     Child c = new Child(); 
     p.doThing(); 
     c.doThing(); // This is correct because c is a Parent! 
     c.doAnotherThing(); // This is correct, because c is also a child. 
    } 

} 

Child hérite de toutes les méthodes de Parent, parce que Child est juste une extension de Parent. Dans le contexte de votre programme, cela signifie que AWTApp peut appeler toutes les méthodes de Frame parce que c'est un cadre et peut donc faire tout ce qu'un cadre peut faire, plus ses propres méthodes.