Bonjour,

Je cherche désespérément à comprendre les getter et setter d'une classe. Jusque là, j'ai compris que dans le premier cas on récupère les informations alors que dans l'autre on écrit les informations.

Me basant sur ce constat, j'ai essayer de me faire un exemple afin de tester la validité de mes dires. Et la miracle, c'est deux erreurs que je ne comprends pas!

Tout d'abord voici ma classe de test:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
package AppliClasses;
 
public class Chanson {
 
    /*
     * Les méthodes de la classe chanson
     */
    public void setChanson(String titleChanson) {
        this.nomChanson = titleChanson;
    }
 
    public void getChanson() {
        //System.out.println(nomChanson);
 
        return nomChanson;
    }
 
    /*
     * Les champs de la classe chansson
     */
    private String nomChanson;
}
Lorsque je place mon return nomChanson, je cherche à retourné le nom via le getter, vue qu'il est censé le renvoyer. A moins que je ne me trompe !
L'erreur que me retourne netBeans est la suivante .
cannot return a value from methode whose result type is void
En gros, si j'ai bien compris, on ne peux pas retourné de valeur car la méthode est de type void.

Pourquoi ? Et comment alors je devrais faire mon getter pour qu'il me retourne la valeur?

Ensuite, passons du cotés du main. ou j'ai un autre type d'erreur et je ne sait pas si c'est le complément de la première. Je suppose que oui.

Si j'écris le main suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
package Appli;
import AppliClasses.Chanson;
 
public class MainForm extends javax.swing.JFrame {
 
    /** Creates new form MainForm */
    public MainForm() {
        initComponents();
    }
 
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {
 
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextAreaOut = new javax.swing.JTextArea();
        jBtnTester = new javax.swing.JButton();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
        jTextAreaOut.setColumns(20);
        jTextAreaOut.setRows(5);
        jScrollPane1.setViewportView(jTextAreaOut);
 
        jBtnTester.setText("Tester");
        jBtnTester.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnTesterActionPerformed(evt);
            }
        });
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
                    .addComponent(jBtnTester))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jBtnTester)
                .addContainerGap())
        );
 
        pack();
    }// </editor-fold>
 
    private void jBtnTesterActionPerformed(java.awt.event.ActionEvent evt) {
 
        Chanson ch = new Chanson();
        ch.setChanson("Butterfly");
 
        //ch.getChanson();
        jTextAreaOut.setText(ch.getChanson());
    }
 
 
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainForm().setVisible(true);
            }
        });
    }
 
    // Variables declaration - do not modify
    private javax.swing.JButton jBtnTester;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextAreaOut;
    // End of variables declaration
 
}
J'obtiens le message d'erreur suivant:
'void' type not allowed here.
Donc en gros je n'ai pas alloué de type void à mon affichage.

Je précise que ce n'est pour moi qu'un exercice visant à comprendre comment fonctionne une classe. Il se peut que j'ai commis d'énormes erreurs, mais ce n'est pas simple avec le nombre de messages ne disant pas la même chose.

Je sollicite donc votre aide pour éclairer ma lanterne et y voire plus clair en ce qui concerne les classes.

Merci beaucoup pour votre aide.