JFrame java
Non capisco questa parte di codice...
super importa il costruttore della classe JFrame, però non capisco perchè bisogna mettere this...
import javax.swing.JFrame; //Applicazione che visualizza un frame sullo schermo //Crea una nuova FrameSemplice. public FrameSemplice() { super(); this.setTitle("Sono una finestra); this.setSize(300,100); this.DefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); }
super importa il costruttore della classe JFrame, però non capisco perchè bisogna mettere this...
Risposte
this non è necessario, ma alcune persone preferiscono metterlo sempre.
"apatriarca":
this non è necessario, ma alcune persone preferiscono metterlo sempre.
Ti ringrazio però non capisco bene il codice perchè solitamente sono abituato a fare per creare una classe in questo modo:
class Persona { String nome; String cognome; //Inizializzo il costruttore public Persona(nome,cognome) { this.nome=nome; this.cognome=cognome; }
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.
"apatriarca":
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.
ma non dovrebbe essere cosi il codice
public class FrameSemplice extends JFrame{ //costruttore public class FrameSemplice(){ super(); } this.setTitle(Una frame semplice); this.setSize(300,100); }
perchè il costruttore viene richiamato con super() che invoca il costruttore Frame(), però non capisco perchè setTitle() e setSize() stanno dentro il costruttore FrameSemplice()...
"apatriarca":
Non capisco il dubbio. Se avessi dei campi all'interno della classe dovresti inizializzarli come hai mostrato (o in altri modi che dipendono da cosa tu voglia fare). In questo caso i campi della classe padre vengono inizializzati in super() e stai quindi poi richiamando semplicemente dei metodi della classe genitore per settare il titolo della finestra e altre cose.
Penso di aver capito, l'unica cosa che ancora non ho molto chiara è come funziona super();