[Language] Explications classe définie dans une classe
Bonjour,
j'apprends actuellement à utiliser le composant JTable en lisant le tutoriel de sun, l'un des codes présentés est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| public class TableDemo extends JPanel {
private boolean DEBUG = false;
public TableDemo() {
...
}
class MyTableModel extends AbstractTableModel {
.....
}
....
} |
Je ne comprends pas comment une classe peut-etre définie dans une autre classe ? Je pensais qu'on ne pouvait y définir que des propriétés et des méthodes.
Mais comment utiliser ensuite la classe MyTableModel à partir de l'instance de la classe TableDemo ?
Merci pour vos réponses.
Ciao
Re: [DEBUTANT] Explications classe définie dans une classe
Salut,
Citation:
Envoyé par etiennegaloup
Je ne comprends pas comment une classe peut-etre définie dans une autre classe ? Je pensais qu'on ne pouvait y définir que des propriétés et des méthodes.
Non tu peux très bien définir une nouvelle classe dans une autre classe : on appelle cela une inner-class (ou classe interne).
Elle a plusieurs avantages :
- Elle a accès à tous les éléments de la classe conteneur (même les éléments privés).
Elle conserve une référence vers la classe conteneur (dans l'exemple, on peut utiliser TableDemo.this dans les méthodes de MyTableModel pour avoit la référence de l'instance de TableDemo associé).
Elle peut être très restrictive (protected et private)
Citation:
Envoyé par etiennegaloup
Mais comment utiliser ensuite la classe MyTableModel à partir de l'instance de la classe TableDemo ?
Tout simplement comme n'importe quelle autre classe :
Code:
MyTableModel model = new MyTableModel();
Dans le même ordre d'idée, tu as les classes annonymes qui permettent de créer des classes dans une méthodes :
Code:
1 2 3 4 5
| button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent pE) {
// ...
}
}); |
A noter que les classes internes peuvent être static, dans ce cas cela signifie que la classe n'est plus associé à la classe conteneur (elle est totalement indépendante comme n'importe quel autre classe).
a++